2019-06-18 linux安裝Redis集群

linux安裝Redis集群(三主三備)

2017-08-05

Redis是一個可基于內(nèi)存亦可持久化的日志型(aof蜕企,rdb)栈妆、高性能Key-Value數(shù)據(jù)庫愕提,并提供多種語言的API锐墙,Redis支持主從同步析校。數(shù)據(jù)可以從主服務器向任意數(shù)量的從服務器上同步构罗,從服務器可以是關聯(lián)其他從服務器的主服務器。

-redis

我們這里搭建的集群就需要六臺機器勺良,三臺為主绰播,redis集群和其他技術的集群有點不一樣。redis一共分成16384個槽尚困,并且把這些槽基本算是平均分配到三臺機器上蠢箩,。引入了備機才能算集群+高可用,即存入的數(shù)據(jù)采用一定策略存到三臺機器上谬泌,而備用機會實現(xiàn)同步主機的數(shù)據(jù)滔韵,并且當主機發(fā)生故障時,備用機能及時的通過選舉掌实,上來充當主機陪蜻,維護集群的穩(wěn)定。

-準備工作

-六臺虛擬機

192.168.40.142

………..

192.168.40.147

-安裝

首先安裝分別安裝:

#yum -y install wget

注意:編譯時候如果報錯贱鼻⊙缏簦可能是沒安裝gcc,請安裝后再執(zhí)行 make && make install

# yum install gcc gcc-c++

安裝redis時遇到zmalloc.h:50:31: 致命錯誤:jemalloc/jemalloc.h:沒有那個文件或目錄

解決辦法

# make MALLOC=libc

下載并解壓

# cd /usr/local

# wget http://download.redis.io/releases/redis-3.2.4.tar.gz

# tar -zxvf redis-3.2.4.tar.gz

# mv redis-3.2.4 redis3

編譯安裝

# cd redis3

# make && make install

單機啟動辦法:

# redis-server redis.conf

-集群配置

創(chuàng)建集群配置目錄

第一臺:192.168.40.142

# mkdir -p /usr/local/redis3/cluster/7142

#cp /usr/local/redis3/redis.conf /usr/local/redis3/cluster/7142/redis-7142.conf

第二臺:192.168.40.143

# mkdir -p /usr/local/redis3/cluster/7143

#cp /usr/local/redis3/redis.conf /usr/local/redis3/cluster/7143/redis-7143.conf

第三臺:192.168.40.144

# mkdir -p /usr/local/redis3/cluster/7144

#cp /usr/local/redis3/redis.conf /usr/local/redis3/cluster/7144/redis-7144.conf

第四臺:192.168.40.145

# mkdir -p /usr/local/redis3/cluster/7145

#cp /usr/local/redis3/redis.conf /usr/local/redis3/cluster/7145/redis-7145.conf

第五臺:192.168.40.146

# mkdir -p /usr/local/redis3/cluster/7146

#cp /usr/local/redis3/redis.conf /usr/local/redis3/cluster/7146/redis-7146.conf

第六臺:192.168.40.147

# mkdir -p /usr/local/redis3/cluster/7147

#cp /usr/local/redis3/redis.conf /usr/local/redis3/cluster/7147/redis-7147.conf

4.修改配置文件redis-7142.conf … redis-7147.conf (6個文件都按照以下格式 一 一修改)

bind 127.0.0.1 # 改為本機地址

port 7142 #改為你設置的端口號

cluster-enabled yes

cluster-node-timeout 15000

cluster-config-file? /usr/local/redis3/cluster/7142/nodes-7142.conf

cluster-migration-barrier 1

注意:6臺機器的配置都要改哦 特別容易出錯的是7142這種 因為每一臺機器設置都不一樣

比如我的就分別是7142邻悬,7143,7144,7145,7146,7147

在每臺機器的防火墻強上症昏,配置redis集群端口,除了設置7142這類端口父丰,還需設置redis集群直接通信的接口肝谭,系統(tǒng)默認是在你設置的redis端口上默認加上10000,及1742

編輯防火墻(此處只拿192.168.40.142機器來做演示蛾扇,其他機器仿照著改 只用改變端口號就行):

? #? vi /etc/sysconfig/iptables

添加如下兩個redis端口:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 7147 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 17147 -j ACCEPT

保存 退出 重啟防火墻

# service iptables restart

##-啟動各節(jié)點 ##

分別 啟動各個節(jié)點

第一臺:

# /usr/local/redis3/src/redis-server /usr/local/redis3/cluster/7142/redis-7142.conf

第二臺:

#? /usr/local/redis3/src/redis-server /usr/local/redis3/cluster/7143/redis-7143.conf

第三臺:

# /usr/local/redis3/src/redis-server /usr/local/redis3/cluster/7144/redis-7144.conf

第四臺:

#? /usr/local/redis3/src/redis-server /usr/local/redis3/cluster/7145/redis-7145.conf

第五臺:

# /usr/local/redis3/src/redis-server /usr/local/redis3/cluster/7146/redis-7146.conf

第六臺:

#? /usr/local/redis3/src/redis-server /usr/local/redis3/cluster/7147/redis-7147.conf

果成功則會顯示如下界面:

特別注意:該界面不能關閉攘烛,不能退出。必須保持镀首。否則會導致redis不可用

解決辦法使用nohup命令來啟動 就可以了

注意:此時雖然6臺機器都正常運行了redis坟漱,但是集群仍未完成

6、查看服務(新開終端)

# ps -ef | grep redis? #查看是否啟動成功

# netstat -tnlp | grep redis #可以看到redis監(jiān)聽端口

-創(chuàng)建集群

-安裝ruby蘑斧、rubygems

前面已經(jīng)準備好了搭建集群的redis節(jié)點靖秩,接下來我們要把這些節(jié)點都串連起來搭建集群须眷。官方提供了一個工具:redis-trib.rb(/usr/local/redis-3.2.1/src/redis-trib.rb) 看后綴就知道不能直接執(zhí)行竖瘾,它是用ruby寫的一個程序,所以我們還得安裝ruby.

# yum -y install ruby ruby-devel rubygems rpm-build

再用 gem 這個命令來安裝 redis接口 gem是ruby的一個工具包.

此時會出現(xiàn)一個問題:因為墻的緣故安裝gem會沒有反應花颗,解決辦法是更換為阿里巴巴的ruby源捕传。

# 刪除默認的官方源

# gem sources -r https://rubygems.org/

#添加淘寶源

# gem sources -a https://ruby.taobao.org/

#查看當前源?

[root@localhost src]# gem sources -l

*** CURRENT SOURCES ***

https://ruby.taobao.org/

-安裝gem

安裝gem

[root@localhost src]# gem install redis

Successfully installed redis-3.3.3

Parsing documentation for redis-3.3.3

上面結束了,接下來運行一下redis-trib.rb

# /usr/local/redis3/src/redis-trib.rb

redis集群就是依靠 上面這些操作 完成集群搭建的.

確認所有的節(jié)點都啟動扩劝,接下來使用參數(shù)create 創(chuàng)建 (在192.168.40.142中來創(chuàng)建)

/usr/local/redis3/src/redis-trib.rb? create? --replicas? 1? 192.168.40.142:7142 192.168.40.143:7143? 192.168.40.144:7144 192.168.40.145:7145? 192.168.40.146:7146? 192.168.40.147:7147

集群創(chuàng)建成功:如下所示

[root@localhost src]#? /usr/local/redis3/src/redis-trib.rb? create? --replicas? 1? 192.168.40.142:7142 192.168.40.143:7143? 192.168.40.144:7144 192.168.40.145:7145? 192.168.40.146:7146? 192.168.40.147:7147

>>> Creating cluster

>>> Performing hash slots allocation on 6 nodes...

Using 3 masters:

192.168.40.142:7142

192.168.40.143:7143

192.168.40.144:7144

Adding replica 192.168.40.145:7145 to 192.168.40.142:7142

Adding replica 192.168.40.146:7146 to 192.168.40.143:7143

Adding replica 192.168.40.147:7147 to 192.168.40.144:7144

M: d80a23c6773fef5456e81f0c1d187d7e51c3d650 192.168.40.142:7142

? slots:0-5460 (5461 slots) master

M: 382ed5a4cb3108c95cab35e27ea0ab340ce45270 192.168.40.143:7143

? slots:5461-10922 (5462 slots) master

M: 909bbc04c98fae3cd17cf4916b1edcec65cb57d1 192.168.40.144:7144

? slots:10923-16383 (5461 slots) master

S: 75cde28bfbfc8f27ead87302a3aa2baba44dd983 192.168.40.145:7145

? replicates d80a23c6773fef5456e81f0c1d187d7e51c3d650

S: 09314222f26560cf405c77ac77d09cae13a26fa5 192.168.40.146:7146

? replicates 382ed5a4cb3108c95cab35e27ea0ab340ce45270

S: 88a5ea69ec4f73b169f6ece244a1a525b86ccd66 192.168.40.147:7147

? replicates 909bbc04c98fae3cd17cf4916b1edcec65cb57d1

Can I set the above configuration? (type 'yes' to accept): yes

>>> Nodes configuration updated

>>> Assign a different config epoch to each node

>>> Sending CLUSTER MEET messages to join the cluster

Waiting for the cluster to join....

>>> Performing Cluster Check (using node 192.168.40.142:7142)

M: d80a23c6773fef5456e81f0c1d187d7e51c3d650 192.168.40.142:7142

? slots:0-5460 (5461 slots) master

? 1 additional replica(s)

M: 909bbc04c98fae3cd17cf4916b1edcec65cb57d1 192.168.40.144:7144

? slots:10923-16383 (5461 slots) master

? 1 additional replica(s)

S: 88a5ea69ec4f73b169f6ece244a1a525b86ccd66 192.168.40.147:7147

? slots: (0 slots) slave

? replicates 909bbc04c98fae3cd17cf4916b1edcec65cb57d1

M: 382ed5a4cb3108c95cab35e27ea0ab340ce45270 192.168.40.143:7143

? slots:5461-10922 (5462 slots) master

? 1 additional replica(s)

S: 75cde28bfbfc8f27ead87302a3aa2baba44dd983 192.168.40.145:7145

? slots: (0 slots) slave

? replicates d80a23c6773fef5456e81f0c1d187d7e51c3d650

S: 09314222f26560cf405c77ac77d09cae13a26fa5 192.168.40.146:7146

? slots: (0 slots) slave

? replicates 382ed5a4cb3108c95cab35e27ea0ab340ce45270

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

說明:

/usr/local/redis3/src/redis-trib.rb create –replicas 1 192.168.40.142:7142 192.168.40.143:7143 192.168.40.144:7144 192.168.40.145:7145 192.168.40.146:7146 192.168.40.147:7147

–replicas 1 表示 自動為每一個master節(jié)點分配一個slave節(jié)點 上面有6個節(jié)點庸论,程序會按照一定規(guī)則生成 3個master(主)3個slave(從)

前面已經(jīng)提醒過的 防火墻一定要開放監(jiān)聽的端口,否則會創(chuàng)建失敗棒呛。

運行中聂示,提示Can I set the above configuration? (type ‘yes’ to accept): yes //輸入yes

接下來 提示 Waiting for the cluster to join………. 安裝的時候在這里就一直等等等,沒反應簇秒,傻傻等半天鱼喉,看這句提示上面一句,Sending Cluster Meet Message to join the Cluster.

這下明白了,我剛開始在一臺Server上去配扛禽,也是不需要等的锋边,這里還需要跑到Server2上做一些這樣的操作。

在192.168.1.238, redis-cli -c -p 700* 分別進入redis各節(jié)點的客戶端命令窗口编曼, 依次輸入 cluster meet 192.168.1.238 7000……

回到Server1豆巨,已經(jīng)創(chuàng)建完畢了。

查看一下 /usr/local/redis/src/redis-trib.rb check 192.168.1.237:7000

到這里集群已經(jīng)初步搭建好了掐场。

最后可以測試:

[root@localhost ~]# /usr/local/redis3/src/redis-cli -h 192.168.40.145 -p 7145

192.168.40.145:7145> get test1

"hh"

192.168.40.145:7145> set gg shuaige

OK

192.168.40.145:7145>

在其他幾臺機器上獲取

[root@localhost src]#? redis-cli -h 192.168.40.145 -p 7145

192.168.40.145:7145> set test1 hh

OK

192.168.40.145:7145> get test

(error) MOVED 6918 192.168.40.143:7143

192.168.40.145:7145> get test1

"hh"

192.168.40.145:7145> get gg

"shuaige"

192.168.40.145:7145>

配置成功往扔。

-redis集群操作

-集群(cluster)

CLUSTER INFO 打印集群的信息

CLUSTER NODES 列出集群當前已知的所有節(jié)點(node),以及這些節(jié)點的相關信息熊户。

-節(jié)點(node)

CLUSTER MEET?將 ip 和 port 所指定的節(jié)點添加到集群當中瓤球,讓它成為集群的一份子。

CLUSTER FORGET?從集群中移除 node_id 指定的節(jié)點敏弃。

CLUSTER REPLICATE?將當前節(jié)點設置為 node_id 指定的節(jié)點的從節(jié)點卦羡。

CLUSTER SAVECONFIG 將節(jié)點的配置文件保存到硬盤里面。

-槽(slot)

CLUSTER ADDSLOTS?[slot …] 將一個或多個槽(slot)指派(assign)給當前節(jié)點麦到。

CLUSTER DELSLOTS?[slot …] 移除一個或多個槽對當前節(jié)點的指派绿饵。

CLUSTER FLUSHSLOTS 移除指派給當前節(jié)點的所有槽,讓當前節(jié)點變成一個沒有指派任何槽的節(jié)點瓶颠。

CLUSTER SETSLOT?NODE?將槽 slot 指派給 node_id 指定的節(jié)點拟赊,如果槽已經(jīng)指派給另一個節(jié)點,那么先讓另一個節(jié)點刪除該槽>粹淋,然后再進行指派吸祟。

CLUSTER SETSLOT?MIGRATING?將本節(jié)點的槽 slot 遷移到 node_id 指定的節(jié)點中。

CLUSTER SETSLOT?IMPORTING?從 node_id 指定的節(jié)點中導入槽 slot 到本節(jié)點桃移。

CLUSTER SETSLOT?STABLE 取消對槽 slot 的導入(import)或者遷移(migrate)屋匕。

-鍵 (key)

CLUSTER KEYSLOT?計算鍵 key 應該被放置在哪個槽上。

CLUSTER COUNTKEYSINSLOT?返回槽 slot 目前包含的鍵值對數(shù)量借杰。

CLUSTER GETKEYSINSLOT?返回 count 個 slot 槽中的鍵过吻。

這些命令是集群所獨有的。執(zhí)行上述命令要先登錄

[root@manage redis]# redis-cli -c -p 6382 -h 192.168.10.220? ? //登錄

192.168.10.220:6382> cluster info? //查看集群情況

cluster_state:ok

cluster_slots_assigned:16384

cluster_slots_ok:16384

cluster_slots_pfail:0

cluster_slots_fail:0

cluster_known_nodes:6

cluster_size:3

cluster_current_epoch:8

cluster_my_epoch:4

cluster_stats_messages_sent:82753

cluster_stats_messages_received:82754

-redis節(jié)點操作

redis集群節(jié)點 增刪

-添加從節(jié)點

添加從節(jié)點slave(某個主節(jié)點的復制品)

#? ./redis-cli -h 192.168.40.145 -p 7145

192.168.40.145> cluster replicate 此處是主節(jié)點master的ID

192.168.40.145> ok

-刪除從節(jié)點

刪除從節(jié)點

# redis-trib.rb del-node 192.168.10.220:6385 '9c240333476469e8e2c8e80b089c48f389827265'

-刪除主節(jié)點

刪除主節(jié)點

如果主節(jié)點有從節(jié)點蔗衡,將從節(jié)點轉移到其他主節(jié)點

如果主節(jié)點有slot纤虽,去掉分配的slot,然后在刪除主節(jié)點

# redis-trib.rb reshard 192.168.10.219:6378 //取消分配的slot,下面是主要過程

How many slots do you want to move (from 1 to 16384)? 1000 //被刪除master的所有slot數(shù)量

What is the receiving node ID? 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052 //接收6378節(jié)點slot的master

Please enter all the source node IDs.

Type 'all' to use all the nodes as source nodes for the hash slots.

Type 'done' once you entered all the source nodes IDs.

Source node #1:03ccad2ba5dd1e062464bc7590400441fafb63f2 //被刪除master的node-id

Source node #2:done?

Do you want to proceed with the proposed reshard plan (yes/no)? yes //取消slot后绞惦,reshard

新增master節(jié)點后逼纸,也進行了這一步操作,當時是分配济蝉,現(xiàn)在去掉杰刽。反著的呻纹。

# redis-trib.rb del-node 192.168.10.219:6378 '03ccad2ba5dd1e062464bc7590400441fafb63f2'

改變從節(jié)點的master

//查看一下6378的從節(jié)點

# redis-cli -p 6378 cluster nodes | grep slave | grep 03ccad2ba5dd1e062464bc7590400441fafb63f2

//將6385加入到新的master

# redis-cli -c -p 6385 -h 192.168.10.220

192.168.10.220:6385> cluster replicate 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052? //新master的node id

OK

192.168.10.220:6385> quit

//查看新master的slave

# redis-cli -p 6379 cluster nodes | grep slave | grep 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052

查看一下,集群情況

# /usr/local/redis3/src/redis-trib.rb check 192.168.40.145:7145

可以看到M為主節(jié)點专缠,S為從節(jié)點

redis cluster命令行(redis-cli -h 192.168.40.145 -p 7145)

1雷酪,新配置二個測試節(jié)點

# cd /etc/redis

//新增配置

# cp redis-6379.conf redis-6378.conf && sed -i "s/6379/6378/g" redis-6378.conf

# cp redis-6382.conf redis-6385.conf && sed -i "s/6382/6385/g" redis-6385.conf

//啟動

# redis-server /etc/redis/redis-6385.conf > /var/log/redis/redis-6385.log 2>&1 &

# redis-server /etc/redis/redis-6378.conf > /var/log/redis/redis-6378.log 2>&1 &

-添加主節(jié)點

添加主節(jié)點

# redis-trib.rb add-node 192.168.10.219:6378 192.168.10.219:6379

注釋:

192.168.10.219:6378是新增的節(jié)點

192.168.10.219:6379集群任一個舊節(jié)點

-添加從節(jié)點

# redis-trib.rb add-node --slave --master-id 03ccad2ba5dd1e062464bc7590400441fafb63f2 192.168.10.220:6385 192.168.10.219:6379

注釋:

--slave,表示添加的是從節(jié)點

--master-id 03ccad2ba5dd1e062464bc7590400441fafb63f2,主節(jié)點的node id涝婉,在這里是前面新添加的6378的node id

192.168.10.220:6385,新節(jié)點

192.168.10.219:6379集群任一個舊節(jié)點

-從新分配slot

重新分配slot

# redis-trib.rb reshard 192.168.10.219:6378 //下面是主要過程

How many slots do you want to move (from 1 to 16384)? 1000 //設置slot數(shù)1000

What is the receiving node ID? 03ccad2ba5dd1e062464bc7590400441fafb63f2 //新節(jié)點node id

Please enter all the source node IDs.

Type 'all' to use all the nodes as source nodes for the hash slots.

Type 'done' once you entered all the source nodes IDs.

Source node #1:all //表示全部節(jié)點重新洗牌

Do you want to proceed with the proposed reshard plan (yes/no)? yes //確認重新分

新增加的主節(jié)點哥力,是沒有slots的,

M: 03ccad2ba5dd1e062464bc7590400441fafb63f2 192.168.10.219:6378

slots:0-332,5461-5794,10923-11255 (0 slots) master

主節(jié)點如果沒有slots的話墩弯,存取數(shù)據(jù)就都不會被選中吩跋。

可以把分配的過程理解成打撲克牌,all表示大家重新洗牌渔工;輸入某個主節(jié)點的node id锌钮,然后在輸入done的話,就好比從某個節(jié)點引矩,抽牌梁丘。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市旺韭,隨后出現(xiàn)的幾起案子氛谜,更是在濱河造成了極大的恐慌,老刑警劉巖区端,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件值漫,死亡現(xiàn)場離奇詭異,居然都是意外死亡织盼,警方通過查閱死者的電腦和手機杨何,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沥邻,“玉大人危虱,你說我怎么就攤上這事∧惫” “怎么了槽地?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長芦瘾。 經(jīng)常有香客問我,道長集畅,這世上最難降的妖魔是什么近弟? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮挺智,結果婚禮上祷愉,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好二鳄,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布赴涵。 她就那樣靜靜地躺著,像睡著了一般订讼。 火紅的嫁衣襯著肌膚如雪髓窜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天欺殿,我揣著相機與錄音寄纵,去河邊找鬼。 笑死脖苏,一個胖子當著我的面吹牛程拭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播棍潘,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼恃鞋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了亦歉?” 一聲冷哼從身側響起山宾,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鳍徽,沒想到半個月后资锰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡阶祭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年绷杜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片濒募。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡鞭盟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瑰剃,到底是詐尸還是另有隱情齿诉,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布晌姚,位于F島的核電站粤剧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏挥唠。R本人自食惡果不足惜抵恋,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宝磨。 院中可真熱鬧弧关,春花似錦盅安、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至株憾,卻和暖如春蝙寨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背号胚。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工籽慢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人猫胁。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓箱亿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親弃秆。 傳聞我的和親對象是個殘疾皇子届惋,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容