etcd的proxy Mode

Proxy

etcd可以作為透明代理運(yùn)行。這樣做可以輕松地在您的基礎(chǔ)架構(gòu)中發(fā)現(xiàn)etcd麻裁,因?yàn)樗梢宰鳛楸镜胤?wù)在每臺(tái)機(jī)器上運(yùn)行陌凳。在這種模式下,etcd充當(dāng)反向代理并將客戶端請(qǐng)求轉(zhuǎn)發(fā)到活動(dòng)的etcd集群沐飘。 etcd代理不參與etcd集群的一致復(fù)制,因此既不增加韌性牲迫,也不會(huì)降低etcd集群的寫入性能薪铜。

etcd目前支持兩種代理模式:readwrite和readonly众弓。默認(rèn)模式是readwrite恩溅,它將讀取和寫入請(qǐng)求轉(zhuǎn)發(fā)給etcd集群隔箍。只讀etcd代理僅將讀取請(qǐng)求轉(zhuǎn)發(fā)給etcd集群,并將HTTP 501返回給所有寫入請(qǐng)求脚乡。

代理將定期清理群集成員列表蜒滩,以避免將所有連接發(fā)送給單個(gè)成員。

etcd代理使用的成員列表是在cluster里面通知的client的地址奶稠。這些client的URL在每個(gè)etcd集群成員的advertise-client-urls選項(xiàng)中指定俯艰。

一個(gè)etcd代理檢查幾個(gè)命令行選項(xiàng)來(lái)發(fā)現(xiàn)它的對(duì)等URL。按照優(yōu)先順序锌订,這些選項(xiàng)是discovery竹握,discovery-srvinitial-clusterinitial-cluster選項(xiàng)設(shè)置為逗號(hào)分隔的一個(gè)或多個(gè)臨時(shí)使用的etcd對(duì)等URL列表辆飘,以便發(fā)現(xiàn)永久群集啦辐。(這個(gè)設(shè)置和static的配置的集群一樣)

在以這種方式建立對(duì)等URL列表之后,代理從第一可到達(dá)對(duì)等端檢索客戶端URL的列表(向cluster發(fā)送request蜈项,選擇第一個(gè)response的對(duì)端Ip)芹关。這些客戶端URL由advertise-client-urls選項(xiàng)指定給etcd對(duì)等方。代理然后每隔30秒繼續(xù)連接到第一個(gè)可訪問(wèn)的etcd集群成員紧卒,以刷新客戶端URL列表侥衬。(防止數(shù)據(jù)一致發(fā)給一個(gè)node)

etcd代理不需要給予advertise-client-urls選項(xiàng),因?yàn)樗鼈儚募褐袡z索此配置跑芳。這意味著必須為每個(gè)代理正確設(shè)置initial-cluster轴总,而advertise-client-urls選項(xiàng)在非代理的節(jié)點(diǎn)上要保證設(shè)置的正確性。 否則博个,對(duì)任何etcd代理的請(qǐng)求將被不正確地轉(zhuǎn)發(fā)怀樟。

請(qǐng)?zhí)貏e注意,不要將advertise-client-urls選項(xiàng)設(shè)置為指向代理自身的URL坡倔,因?yàn)檫@樣的配置將導(dǎo)致代理進(jìn)入循環(huán)漂佩,直到資源耗盡為止將請(qǐng)求轉(zhuǎn)發(fā)給自身。 要糾正這兩種情況罪塔,請(qǐng)停止etcd并使用正確的URL重新啟動(dòng)它投蝉。

下面的命令來(lái)聲明etcd啟動(dòng)peer和proxy的不同:

# Use goreman to run `go get github.com/mattn/goreman`
etcd1: bin/etcd --name infra1 --listen-client-urls http://127.0.0.1:2379 --advertise-client-urls http://127.0.0.1:2379 --listen-peer-urls http://127.0.0.1:12380 --initial-advertise-peer-urls http://127.0.0.1:12380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new --enable-pprof
etcd2: bin/etcd --name infra2 --listen-client-urls http://127.0.0.1:22379 --advertise-client-urls http://127.0.0.1:22379 --listen-peer-urls http://127.0.0.1:22380 --initial-advertise-peer-urls http://127.0.0.1:22380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new --enable-pprof
etcd3: bin/etcd --name infra3 --listen-client-urls http://127.0.0.1:32379 --advertise-client-urls http://127.0.0.1:32379 --listen-peer-urls http://127.0.0.1:32380 --initial-advertise-peer-urls http://127.0.0.1:32380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new --enable-pprof
# in future, use proxy to listen on 2379
#proxy: bin/etcd --name infra-proxy1 --proxy=on --listen-client-urls http://127.0.0.1:2378 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380' --enable-pprof

總結(jié)一下etcd的 proxy的啟動(dòng)和peer的發(fā)現(xiàn)步驟:

1.etcd proxy將會(huì)執(zhí)行下面的步驟來(lái)發(fā)現(xiàn)peer-urls:

    1.如果給proxy設(shè)置了discovery service, 那么就通過(guò)discovery service來(lái)發(fā)現(xiàn)cluster里面的非proxy的initial-advertise-peer-urls所有的URL征堪。
    2.如果給proxy設(shè)置了discovery-srv瘩缆,通過(guò)DNS發(fā)現(xiàn)peer-urls
    3.如果proxy設(shè)置了initial-cluster,那么將會(huì)變成peer-urls
    4.如果什么都沒(méi)設(shè)置就采用默認(rèn)的http://localhost:2380,http://localhost:7001.

2.peer-urls用來(lái)聯(lián)系非proxy的cluster來(lái)發(fā)現(xiàn)他們的client-urls佃蚜。因此client-urls是 所有cluter member的advertise-client-urls 集合

3.發(fā)給proxy的所有的request消息將被轉(zhuǎn)發(fā)給client-urls

始終首先啟動(dòng)etcd集群成員(非proxy)庸娱,然后任意的proxies着绊。 代理必須能夠到達(dá)群集成員以檢索其配置,如果沒(méi)有這種條件熟尉,那么將會(huì)嘗試連接归露。 在任何代理之前啟動(dòng)成員可確保代理可以在稍后啟動(dòng)時(shí)發(fā)現(xiàn)客戶端URL。

Using an etcd proxy

要以代理模式啟動(dòng)etcd斤儿,您需要提供三個(gè)標(biāo)志:proxy剧包,listen-client-urls和initial-cluster(或者discovery)。

要啟動(dòng)一個(gè)readwrite代理往果,請(qǐng)?jiān)O(shè)置-proxy on;要啟動(dòng)只讀代理疆液,請(qǐng)?jiān)O(shè)置-proxy readonly。

代理將監(jiān)聽(tīng)listen-client-urls并將請(qǐng)求轉(zhuǎn)發(fā)到從初始集群或發(fā)現(xiàn)url中發(fā)現(xiàn)的etcd集群陕贮。

Start an etcd proxy with a static configuration

靜態(tài)配置proxy的時(shí)候只需要指定initial-cluster就行

etcd --proxy on \
--listen-client-urls http://127.0.0.1:2379 \
--initial-cluster infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380,infra2=http://10.0.1.12:2380

Start an etcd proxy with the discovery service

如果你的etcd cluster 使用的是discovery service的部署方式堕油,那么你也可以用discovery的方式啟動(dòng)proxy。
用discovery service啟動(dòng)proxy需要指定discovery 標(biāo)志肮之。proxy會(huì)一直等待etcd cluter的建立完成掉缺。然后開(kāi)始轉(zhuǎn)發(fā)請(qǐng)求信息。

etcd --proxy on \
--listen-client-urls http://127.0.0.1:2379 \
--discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de \

Fallback to proxy mode with discovery service

如果你cluster用的是discovery service模式局骤,那么如果真實(shí)的節(jié)點(diǎn)的數(shù)目大于你配置的數(shù)目攀圈。那么多余的節(jié)點(diǎn)會(huì)自動(dòng)變成readwrite的proxy模式。比如你配置的url的數(shù)量為5峦甩,但你有10個(gè)節(jié)點(diǎn)赘来,那么其它5個(gè)會(huì)自動(dòng)變?yōu)閜roxy的mdoe。當(dāng)然你也可以使用discovery-fallback='exit' 來(lái)關(guān)閉這個(gè)功能凯傲。

Promote a proxy to a member of etcd cluster

proxy不參加etcd的同步犬辰,任何時(shí)候etcd都不會(huì)去主動(dòng)把自己變?yōu)閑tcd的一個(gè)成員。如果你想添加proxy到etcd冰单,需要下面四個(gè)步驟

use etcdctl to add the proxy node as an etcd member into the existing cluster
stop the etcd proxy process or service
remove the existing proxy data directory
restart the etcd process with new member configuration

例子

假設(shè)你有一個(gè)成員的cluster和一個(gè)proxy幌缝,信息如下:

NAME    ADDRESS
infra0  10.0.1.10
proxy0  10.0.1.11

當(dāng)你完成下面操作,集群將變?yōu)閮蓚€(gè)成員的集群诫欠。

Add a new member into the existing cluster

首先你需要用etcdctl 來(lái)增加一個(gè)成員到cluster里面涵卵,它會(huì)輸出對(duì)應(yīng)新cluster數(shù)目的正確的配置信息:

$ etcdctl -endpoint http://10.0.1.10:2379 member add infra1 http://10.0.1.11:2380
added member 9bf1b35fc7761a23 to cluster

ETCD_NAME="infra1"
ETCD_INITIAL_CLUSTER="infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380"
ETCD_INITIAL_CLUSTER_STATE=existing

Stop the proxy process

停止proxy,我們可以擦出硬盤上的信息荒叼,然后重新導(dǎo)入新的配置轿偎。

ps aux | grep etcd
kill %etcd_proxy_pid%

如果用的systemd啟動(dòng)的etcd

sudo systemctl stop etcd

Remove the existing proxy data dir

rm -rf %data_dir%/proxy

Start etcd as a new member

最后,重新啟動(dòng)etcd用最新的配置:

$ export ETCD_NAME="infra1"
$ export ETCD_INITIAL_CLUSTER="infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380"
$ export ETCD_INITIAL_CLUSTER_STATE=existing
$ etcd --listen-client-urls http://10.0.1.11:2379 \
--advertise-client-urls http://10.0.1.11:2379 \
--listen-peer-urls http://10.0.1.11:2380 \
--initial-advertise-peer-urls http://10.0.1.11:2380 \
--data-dir %data_dir%

如果你用systemd跑的etcd被廓,那么你可以編輯service 文件來(lái)得到正確的配置坏晦。然后使用下面命令

sudo systemd restart etcd# etcd的proxy Mode 

Proxy

etcd可以作為透明代理運(yùn)行。這樣做可以輕松地在您的基礎(chǔ)架構(gòu)中發(fā)現(xiàn)etcd,因?yàn)樗梢宰鳛楸镜胤?wù)在每臺(tái)機(jī)器上運(yùn)行昆婿。在這種模式下球碉,etcd充當(dāng)反向代理并將客戶端請(qǐng)求轉(zhuǎn)發(fā)到活動(dòng)的etcd集群。 etcd代理不參與etcd集群的一致復(fù)制仓蛆,因此既不增加韌性睁冬,也不會(huì)降低etcd集群的寫入性能。

etcd目前支持兩種代理模式:readwrite和readonly多律。默認(rèn)模式是readwrite痴突,它將讀取和寫入請(qǐng)求轉(zhuǎn)發(fā)給etcd集群。只讀etcd代理僅將讀取請(qǐng)求轉(zhuǎn)發(fā)給etcd集群狼荞,并將HTTP 501返回給所有寫入請(qǐng)求脱衙。

代理將定期清理群集成員列表霸株,以避免將所有連接發(fā)送給單個(gè)成員。

etcd代理使用的成員列表是在cluster里面通知的client的地址爷狈。這些client的URL在每個(gè)etcd集群成員的advertise-client-urls選項(xiàng)中指定殉挽。

一個(gè)etcd代理檢查幾個(gè)命令行選項(xiàng)來(lái)發(fā)現(xiàn)它的對(duì)等URL丰涉。按照優(yōu)先順序,這些選項(xiàng)是discovery斯碌,discovery-srvinitial-cluster一死。initial-cluster選項(xiàng)設(shè)置為逗號(hào)分隔的一個(gè)或多個(gè)臨時(shí)使用的etcd對(duì)等URL列表,以便發(fā)現(xiàn)永久群集傻唾。(這個(gè)設(shè)置和static的配置的集群一樣)

在以這種方式建立對(duì)等URL列表之后投慈,代理從第一可到達(dá)對(duì)等端檢索客戶端URL的列表(向cluster發(fā)送request,選擇第一個(gè)response的對(duì)端Ip)冠骄。這些客戶端URL由advertise-client-urls選項(xiàng)指定給etcd對(duì)等方伪煤。代理然后每隔30秒繼續(xù)連接到第一個(gè)可訪問(wèn)的etcd集群成員,以刷新客戶端URL列表凛辣。(防止數(shù)據(jù)一致發(fā)給一個(gè)node)

etcd代理不需要給予advertise-client-urls選項(xiàng)抱既,因?yàn)樗鼈儚募褐袡z索此配置。這意味著必須為每個(gè)代理正確設(shè)置initial-cluster扁誓,而advertise-client-urls選項(xiàng)在非代理的節(jié)點(diǎn)上要保證設(shè)置的正確性防泵。 否則,對(duì)任何etcd代理的請(qǐng)求將被不正確地轉(zhuǎn)發(fā)蝗敢。

請(qǐng)?zhí)貏e注意捷泞,不要將advertise-client-urls選項(xiàng)設(shè)置為指向代理自身的URL,因?yàn)檫@樣的配置將導(dǎo)致代理進(jìn)入循環(huán)前普,直到資源耗盡為止將請(qǐng)求轉(zhuǎn)發(fā)給自身肚邢。 要糾正這兩種情況,請(qǐng)停止etcd并使用正確的URL重新啟動(dòng)它。

下面的命令來(lái)聲明etcd啟動(dòng)peer和proxy的不同:

# Use goreman to run `go get github.com/mattn/goreman`
etcd1: bin/etcd --name infra1 --listen-client-urls http://127.0.0.1:2379 --advertise-client-urls http://127.0.0.1:2379 --listen-peer-urls http://127.0.0.1:12380 --initial-advertise-peer-urls http://127.0.0.1:12380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new --enable-pprof
etcd2: bin/etcd --name infra2 --listen-client-urls http://127.0.0.1:22379 --advertise-client-urls http://127.0.0.1:22379 --listen-peer-urls http://127.0.0.1:22380 --initial-advertise-peer-urls http://127.0.0.1:22380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new --enable-pprof
etcd3: bin/etcd --name infra3 --listen-client-urls http://127.0.0.1:32379 --advertise-client-urls http://127.0.0.1:32379 --listen-peer-urls http://127.0.0.1:32380 --initial-advertise-peer-urls http://127.0.0.1:32380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new --enable-pprof
# in future, use proxy to listen on 2379
#proxy: bin/etcd --name infra-proxy1 --proxy=on --listen-client-urls http://127.0.0.1:2378 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380' --enable-pprof

總結(jié)一下etcd的 proxy的啟動(dòng)和peer的發(fā)現(xiàn)步驟:

1.etcd proxy將會(huì)執(zhí)行下面的步驟來(lái)發(fā)現(xiàn)peer-urls:

    1.如果給proxy設(shè)置了discovery service骡湖, 那么就通過(guò)discovery service來(lái)發(fā)現(xiàn)cluster里面的非proxy的initial-advertise-peer-urls所有的URL贱纠。
    2.如果給proxy設(shè)置了discovery-srv,通過(guò)DNS發(fā)現(xiàn)peer-urls
    3.如果proxy設(shè)置了initial-cluster响蕴,那么將會(huì)變成peer-urls
    4.如果什么都沒(méi)設(shè)置就采用默認(rèn)的http://localhost:2380,http://localhost:7001.

2.peer-urls用來(lái)聯(lián)系非proxy的cluster來(lái)發(fā)現(xiàn)他們的client-urls谆焊。因此client-urls是 所有cluter member的advertise-client-urls 集合

3.發(fā)給proxy的所有的request消息將被轉(zhuǎn)發(fā)給client-urls

始終首先啟動(dòng)etcd集群成員(非proxy),然后任意的proxies浦夷。 代理必須能夠到達(dá)群集成員以檢索其配置辖试,如果沒(méi)有這種條件,那么將會(huì)嘗試連接劈狐。 在任何代理之前啟動(dòng)成員可確保代理可以在稍后啟動(dòng)時(shí)發(fā)現(xiàn)客戶端URL罐孝。

Using an etcd proxy

要以代理模式啟動(dòng)etcd,您需要提供三個(gè)標(biāo)志:proxy肥缔,listen-client-urls和initial-cluster(或者discovery)莲兢。

要啟動(dòng)一個(gè)readwrite代理,請(qǐng)?jiān)O(shè)置-proxy on;要啟動(dòng)只讀代理续膳,請(qǐng)?jiān)O(shè)置-proxy readonly改艇。

代理將監(jiān)聽(tīng)listen-client-urls并將請(qǐng)求轉(zhuǎn)發(fā)到從初始集群或發(fā)現(xiàn)url中發(fā)現(xiàn)的etcd集群。

Start an etcd proxy with a static configuration

靜態(tài)配置proxy的時(shí)候只需要指定initial-cluster就行

etcd --proxy on \
--listen-client-urls http://127.0.0.1:2379 \
--initial-cluster infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380,infra2=http://10.0.1.12:2380

Start an etcd proxy with the discovery service

如果你的etcd cluster 使用的是discovery service的部署方式坟岔,那么你也可以用discovery的方式啟動(dòng)proxy谒兄。
用discovery service啟動(dòng)proxy需要指定discovery 標(biāo)志。proxy會(huì)一直等待etcd cluter的建立完成社付。然后開(kāi)始轉(zhuǎn)發(fā)請(qǐng)求信息承疲。

etcd --proxy on \
--listen-client-urls http://127.0.0.1:2379 \
--discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de \

Fallback to proxy mode with discovery service

如果你cluster用的是discovery service模式,那么如果真實(shí)的節(jié)點(diǎn)的數(shù)目大于你配置的數(shù)目瘦穆。那么多余的節(jié)點(diǎn)會(huì)自動(dòng)變成readwrite的proxy模式纪隙。比如你配置的url的數(shù)量為5,但你有10個(gè)節(jié)點(diǎn)扛或,那么其它5個(gè)會(huì)自動(dòng)變?yōu)閜roxy的mdoe绵咱。當(dāng)然你也可以使用discovery-fallback='exit' 來(lái)關(guān)閉這個(gè)功能。

Promote a proxy to a member of etcd cluster

proxy不參加etcd的同步熙兔,任何時(shí)候etcd都不會(huì)去主動(dòng)把自己變?yōu)閑tcd的一個(gè)成員悲伶。如果你想添加proxy到etcd,需要下面四個(gè)步驟

use etcdctl to add the proxy node as an etcd member into the existing cluster
stop the etcd proxy process or service
remove the existing proxy data directory
restart the etcd process with new member configuration

例子

假設(shè)你有一個(gè)成員的cluster和一個(gè)proxy住涉,信息如下:

NAME    ADDRESS
infra0  10.0.1.10
proxy0  10.0.1.11

當(dāng)你完成下面操作麸锉,集群將變?yōu)閮蓚€(gè)成員的集群。

Add a new member into the existing cluster

首先你需要用etcdctl 來(lái)增加一個(gè)成員到cluster里面舆声,它會(huì)輸出對(duì)應(yīng)新cluster數(shù)目的正確的配置信息:

$ etcdctl -endpoint http://10.0.1.10:2379 member add infra1 http://10.0.1.11:2380
added member 9bf1b35fc7761a23 to cluster

ETCD_NAME="infra1"
ETCD_INITIAL_CLUSTER="infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380"
ETCD_INITIAL_CLUSTER_STATE=existing

Stop the proxy process

停止proxy花沉,我們可以擦出硬盤上的信息柳爽,然后重新導(dǎo)入新的配置。

ps aux | grep etcd
kill %etcd_proxy_pid%

如果用的systemd啟動(dòng)的etcd

sudo systemctl stop etcd

Remove the existing proxy data dir

rm -rf %data_dir%/proxy

Start etcd as a new member

最后碱屁,重新啟動(dòng)etcd用最新的配置:

$ export ETCD_NAME="infra1"
$ export ETCD_INITIAL_CLUSTER="infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380"
$ export ETCD_INITIAL_CLUSTER_STATE=existing
$ etcd --listen-client-urls http://10.0.1.11:2379 \
--advertise-client-urls http://10.0.1.11:2379 \
--listen-peer-urls http://10.0.1.11:2380 \
--initial-advertise-peer-urls http://10.0.1.11:2380 \
--data-dir %data_dir%

如果你用systemd跑的etcd磷脯,那么你可以編輯service 文件來(lái)得到正確的配置。然后使用下面命令

sudo systemd restart etcd 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末娩脾,一起剝皮案震驚了整個(gè)濱河市赵誓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌柿赊,老刑警劉巖俩功,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異碰声,居然都是意外死亡诡蜓,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門奥邮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)万牺,“玉大人,你說(shuō)我怎么就攤上這事洽腺。” “怎么了覆旱?”我有些...
    開(kāi)封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵蘸朋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我扣唱,道長(zhǎng)藕坯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任噪沙,我火速辦了婚禮炼彪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘正歼。我一直安慰自己辐马,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布局义。 她就那樣靜靜地躺著喜爷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪萄唇。 梳的紋絲不亂的頭發(fā)上檩帐,一...
    開(kāi)封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音另萤,去河邊找鬼湃密。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的泛源。 我是一名探鬼主播拔妥,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼俩由!你這毒婦竟也來(lái)了毒嫡?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤幻梯,失蹤者是張志新(化名)和其女友劉穎兜畸,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體碘梢,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咬摇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了煞躬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肛鹏。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖恩沛,靈堂內(nèi)的尸體忽然破棺而出在扰,到底是詐尸還是另有隱情,我是刑警寧澤雷客,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布芒珠,位于F島的核電站,受9級(jí)特大地震影響搅裙,放射性物質(zhì)發(fā)生泄漏皱卓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一部逮、第九天 我趴在偏房一處隱蔽的房頂上張望娜汁。 院中可真熱鬧,春花似錦兄朋、人聲如沸掐禁。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)穆桂。三九已至,卻和暖如春融虽,著一層夾襖步出監(jiān)牢的瞬間享完,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工有额, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留般又,地道東北人彼绷。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像茴迁,于是被迫代替她去往敵國(guó)和親寄悯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348