摘要: 1、建議使用dubbo-2.3.3以上版本的使用zookeeper注冊(cè)中心客戶端
2、Zookeeper是Apache Hadoop的子項(xiàng)目早龟,強(qiáng)度相對(duì)較好,建議生產(chǎn)環(huán)境使用該注冊(cè)中心猫缭。
3葱弟、Dubbo未對(duì)Zookeeper服務(wù)器端做任何侵入修改,只需安裝原生的Zookeeper服務(wù)器即可猜丹, 所有注冊(cè)中心邏輯適配都在調(diào)用Zookeeper客戶端時(shí)完成芝加。
注冊(cè)中心
可選方案:zookeeper、Redis
1、建議使用dubbo-2.3.3以上版本的使用zookeeper注冊(cè)中心客戶端
2藏杖、Zookeeper是Apache Hadoop的子項(xiàng)目将塑,強(qiáng)度相對(duì)較好,建議生產(chǎn)環(huán)境使用該注冊(cè)中心蝌麸。
3点寥、Dubbo未對(duì)Zookeeper服務(wù)器端做任何侵入修改,只需安裝原生的Zookeeper服務(wù)器即可来吩, 所有注冊(cè)中心邏輯適配都在調(diào)用Zookeeper客戶端時(shí)完成敢辩。
安裝 Dubbo 注冊(cè)中心(Zookeeper-3.4.6)
1、 修改操作系統(tǒng)的/etc/hosts 文件中添加:
# zookeeper servers
xxx.xxx.xxx.xxx jeesmlsz-01
2弟疆、 到 http://apache.fayea.com/zookeeper/下載 zookeeper-3.4.6:
$wgethttp://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
3戚长、 解壓 zookeeper 安裝包:
$tar -zxvf zookeeper-3.4.6.tar.gz
4、 在/home/jeesml/zookeeper-3.4.6 目錄下創(chuàng)建以下目錄:
$cd /home/jeesml/zookeeper-3.4.6
$mkdir data
$mkdir logs
5怠苔、 將 zookeeper-3.4.6/conf 目錄下的 zoo_sample.cfg 文件拷貝一份同廉,命名為為 zoo.cfg
$cp zoo_sample.cfg zoo.cfg
6、 修改 zoo.cfg 配置文件:
$vi zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/home/jeesml/zookeeper-3.4.6/data
dataLogDir=/home/jeesml/zookeeper-3.4.6/logs
# the port at which the clients will connect
clientPort=2181
#2888,3888 are election port
server.1=jeesmlsz-01:2888:3888
其中柑司,
2888 端口號(hào)是 zookeeper 服務(wù)之間通信的端口迫肖。
3888 是 zookeeper 與其他應(yīng)用程序通信的端口。
jeesmlsz-01 是在 hosts 中已映射了 IP 的主機(jī)名帜羊。
initLimit:這個(gè)配置項(xiàng)是用來(lái)配置 Zookeeper 接受客戶端(這里所說(shuō)的客戶端不 是用戶連接 Zookeeper 服務(wù)器的客戶端咒程,而是 Zookeeper 服務(wù)器集群中連接到
Leader 的 Follower
服務(wù)器)初始化連接時(shí)最長(zhǎng)能忍受多少個(gè)心跳時(shí)間間隔數(shù)。 當(dāng)已經(jīng)超過(guò) 10 個(gè)心跳的時(shí)間(也就是 tickTime)長(zhǎng)度后 Zookeeper
服務(wù)器還沒(méi) 有收到客戶端的返回信息讼育,那么表明這個(gè)客戶端連接失敗帐姻。總的時(shí)間長(zhǎng)度就是 5*2000=10 秒奶段。
syncLimit:這個(gè)配置項(xiàng)標(biāo)識(shí) Leader 與 Follower 之間發(fā)送消息饥瓷,請(qǐng)求和應(yīng)答時(shí) 間長(zhǎng)度,最長(zhǎng)不能超過(guò)多少個(gè) tickTime 的時(shí)間長(zhǎng)度痹籍,總的時(shí)間長(zhǎng)度就是 2*2000=4 秒呢铆。
server.A=B:C:D:其中 A 是一個(gè)數(shù)字,表示這個(gè)是第幾號(hào)服務(wù)器蹲缠;B
是這個(gè)服務(wù) 器的 IP 地址或/etc/hosts 文件中映射了 IP 的主機(jī)名棺克;C 表示的是這個(gè)服務(wù)器與 集群中的 Leader
服務(wù)器交換信息的端口;D 表示的是萬(wàn)一集群中的 Leader 服務(wù) 器掛了线定,需要一個(gè)端口來(lái)重新進(jìn)行選舉娜谊,選出一個(gè)新的
Leader,而這個(gè)端口就是 用來(lái)執(zhí)行選舉時(shí)服務(wù)器相互通信的端口斤讥。如果是偽集群的配置方式纱皆,由于 B 都是 一樣,所以不同的 Zookeeper
實(shí)例通信端口號(hào)不能一樣,所以要給它們分配不同 的端口號(hào)
7派草、 在 dataDir=/home/jeesml/zookeeper-3.4.6/data 下創(chuàng)建 myid 文件
編輯 myid 文件搀缠,并在對(duì)應(yīng)的 IP 的機(jī)器上輸入對(duì)應(yīng)的編號(hào)。如在 zookeeper 上近迁,myid 文件內(nèi)容就是 1艺普。如果只在單點(diǎn)上進(jìn)行安裝配置,那么只有一個(gè) server.1钳踊。
$vi myid
1
8衷敌、 jeesml用戶下修改vi /home/jeesml/.bash_profile勿侯,增加 zookeeper 配置:
# zookeeper env
export ZOOKEEPER_HOME=/home/jeesml/zookeeper-3.4.6
export PATH=$ZOOKEEPER_HOME/bin:$PATH
使配置文件生效 $source /home/jeesml/.bash_profile
9拓瞪、 在防火墻中打開(kāi)要用到的端口 2181、2888助琐、3888 切換到 root 用戶權(quán)限祭埂,執(zhí)行以下命令:
#chkconfig iptables on
#service iptables start
編輯/etc/sysconfig/iptables
#vi /etc/sysconfig/iptables
增加以下 3 行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT
重啟防火墻: # service iptables restart
查看防火墻端口狀態(tài):
#service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2181
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2888
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3888
8 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
10、 啟動(dòng)并測(cè)試 zookeeper(要用 jeesml用戶啟動(dòng)兵钮,不要用 root):
(1) 使用 jeesml用戶到/home/jeesml/zookeeper-3.4.6/bin 目錄中執(zhí)行:
$zkServer.sh start
(2) 輸入 jps 命令查看進(jìn)程:
$jps
1456 QuorumPeerMain
1475 Jps
其中蛆橡,QuorumPeerMain 是 zookeeper 進(jìn)程,啟動(dòng)正常
(3) 查看狀態(tài):
$zkServer.sh status
(4) 查看 zookeeper 服務(wù)輸出信息:
由于服務(wù)信息輸出文件在/home/jeesml/zookeeper-3.4.6/bin/zookeeper.out
$tail -500f zookeeper.out
11掘譬、 停止 zookeeper 進(jìn)程:
$zkServer.sh stop
12泰演、 配置 zookeeper 開(kāi)機(jī)使用 jeesml用戶啟動(dòng):
編輯/etc/rc.local 文件,加入:
su - jeesml-c '/home/jeesml/zookeeper-3.4.6/bin/zkServer.sh start'
請(qǐng)各位持續(xù)關(guān)注《跟我學(xué)習(xí)dubbo-Dubbo管理控制臺(tái)的安裝(3)》
核心技術(shù):Maven,Springmvc mybatis shiro, Druid, Restful, Dubbo, ZooKeeper,Redis,FastDFS,ActiveMQ,Nginx
1.?????項(xiàng)目核心代碼結(jié)構(gòu)截圖
愿意了解框架技術(shù)或者源碼的朋友直接求求交流分享技術(shù):2042849237
分布式的一些解決方案本谜,有愿意了解的朋友可以找我們團(tuán)隊(duì)探討
更多詳細(xì)源碼參考來(lái)源:http://minglisoft.cn/technology