目錄
1.0 簡(jiǎn)單介紹
1.1關(guān)于DUBBO
1.2 關(guān)于Zookeeper
2.0 Zookeeper單機(jī)部署
2.1 選一臺(tái)服務(wù)器為注冊(cè)中心服務(wù)器买猖,安裝Zookeeper
1> 修改操作系統(tǒng)的/etc/hosts,添加別名
2> 下載zookeeper安裝包
3> 解壓zookeeper安裝包
2.2 配置Zookeeper
1> 在zookeeper-3.4.9目錄中創(chuàng)建data和logs目錄
2> 修改zookeeper配置文件
3> 創(chuàng)建myid文件牡昆,輸入服務(wù)器的編號(hào)
4> 編輯.bash_profile臭增,增加zookeeper的環(huán)境變量
2.3 啟動(dòng)Zookeeper服務(wù)
1> 啟動(dòng)zookeeper服務(wù)
2> 配置zookeeper開機(jī)自動(dòng)啟動(dòng)
2.4 防火墻配置
1> 編輯防火墻配置文件,添加端口訪問規(guī)則
2> 查看防火墻的規(guī)則
3.0 補(bǔ)充
1> 查看zookeeper進(jìn)程
2> 查看zookeeper狀態(tài)
3> 查看zookeeper服務(wù)輸出的信息
4> 停止zookeeper服務(wù)
1.0 簡(jiǎn)單介紹
1.1 關(guān)于DUBBO
DUBBO是一個(gè)分布式服務(wù)框架,致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案寝凌,是阿里巴巴SOA服務(wù)化治理方案的核心框架狮含,每天為2,000+個(gè)服務(wù)提供3,000,000,000+次訪問量支持顽悼,并被廣泛應(yīng)用于阿里巴巴集團(tuán)的各成員站點(diǎn)。
1.2 關(guān)于Zookeeper
Zookeeper是為分布式應(yīng)用程序提供高性能協(xié)調(diào)服務(wù)的工具集合几迄,也是Google的Chubby一個(gè)開源的實(shí)現(xiàn)蔚龙,是Hadoop的分布式協(xié)調(diào)服務(wù)。它包含一個(gè)簡(jiǎn)單的原語(yǔ)集映胁,分布式應(yīng)用程序可以基于它實(shí)現(xiàn)配置維護(hù)木羹、命名服務(wù)、分布式同步解孙、組服務(wù)等坑填。Zookeeper可以用來保證數(shù)據(jù)在ZK集群之間的數(shù)據(jù)的事務(wù)性一致。其中ZooKeeper提供通用的分布式鎖服務(wù)弛姜,用以協(xié)調(diào)分布式應(yīng)用脐瑰。
Zookeeper作為Hadoop項(xiàng)目中的一個(gè)子項(xiàng)目,是Hadoop集群管理的一個(gè)必不可少的模塊,它主要用來解決分布式應(yīng)用中經(jīng)常遇到的數(shù)據(jù)管理問題,如集群管理廷臼、統(tǒng)一命名服務(wù)苍在、分布式配置管理、分布式消息隊(duì)列荠商、分布式鎖寂恬、分布式協(xié)調(diào)等。在Hadoop中莱没,它管理Hadoop集群中的NameNode掠剑,還有在Hbase中Master Election、Server 之間狀態(tài)同狀步等郊愧。
Zoopkeeper提供了一套很好的分布式集群管理的機(jī)制朴译,就是它這種基于層次型的目錄樹的數(shù)據(jù)結(jié)構(gòu)井佑,并對(duì)樹中的節(jié)點(diǎn)進(jìn)行有效管理,從而可以設(shè)計(jì)出多種多樣的分布式的數(shù)據(jù)管理模型眠寿。
DUBBO推薦生產(chǎn)環(huán)境中的注冊(cè)中心使用Zookeeper躬翁,支持基于網(wǎng)絡(luò)的集群方式。
2.0 Zookeeper單機(jī)部署
- 環(huán)境:CentOS 6.8 x64
- IP:x.x.x.x
- Zookeeper版本:3.4.9
- 系統(tǒng)用戶:root
2.1 選一臺(tái)空服務(wù)器為注冊(cè)中心服務(wù)器盯拱,安裝Zookeeper
1> 修改操作系統(tǒng)的/etc/hosts盒发,添加別名
[root@iZbp ~]# vim /etc/hosts
# Zookeeper Server
121.43.161.35 xxx-provider-01
2> 下載zookeeper安裝包
# wget http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
3> 解壓zookeeper安裝包
# tar -zxvf zookeeper-3.4.9.tar.gz
2.2 配置Zookeeper
1> 在zookeeper-3.4.9目錄中創(chuàng)建data和logs目錄
# cd /data/
# mv ~/zookeeper-3.4.9 ./
# ls
lost+found mysql wwwlogs wwwroot zookeeper-3.4.9
# cd zookeeper-3.4.9/
# mkdir data
# mkdir logs
2> 修改zookeeper配置文件
拷貝/conf/zoo_sample.cfg,命名為zoo.cfg
[root@iZbp zookeeper-3.4.9]# cd conf/
[root@iZbp conf]# ls
configuration.xsl log4j.properties zoo_sample.cfg
[root@iZbp conf]# cp zoo_sample.cfg zoo.cfg
修改zoo.cfg配置文件
# vim zoo.cfg
2 tickTime=2000
5 initLimit=10
8 syncLimit=5
12 dataDir=/data/zookeeper-3.4.9/data
13 dataLogDir=/data/zookeeper-3.4.9/logs
15 clientPort=2181
16 server.1=xxx-provider-01:2888:3888
TIPS
- initLimit
這個(gè)配置項(xiàng)是用來配置 Zookeeper 接受客戶端(這里所說的客戶端不是用戶連接 Zookeeper 服務(wù)器的客戶端狡逢,而是 Zookeeper 服務(wù)器集群中連接到Leader 的 Follower 服務(wù)器)初始化連接時(shí)最長(zhǎng)能忍受多少個(gè)心跳時(shí)間間隔數(shù)宁舰。當(dāng)已經(jīng)超過 10 個(gè)心跳的時(shí)間(也就是tickTime)長(zhǎng)度后Zookeeper服務(wù)器還沒有收到客戶端的返回信息,那么表明這個(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)不能超過多少個(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 表示的是萬一集群中的 Leader 服務(wù)器掛了,需要一個(gè)端口來重新進(jìn)行選舉梢莽,選出一個(gè)新的 Leader萧豆,而這個(gè)端口就是用來執(zhí)行選舉時(shí)服務(wù)器相互通信的端口。如果是偽集群的配置方式蟹漓,由于 B 都是一樣炕横,所以不同的 Zookeeper 實(shí)例通信端口號(hào)不能一樣,所以要給它們分配不同的端口號(hào)葡粒。 - 端口
2888 端口號(hào)是 zookeeper 服務(wù)之間通信的端口份殿。
3888 是 zookeeper 與其他應(yīng)用程序通信的端口。
ddxstore-provider-01 是在 hosts 中已映射了 IP 的主機(jī)名
3> 創(chuàng)建myid文件嗽交,輸入服務(wù)器的編號(hào)
[root@iZbp conf]# cd /data/zookeeper-3.4.9/data/
[root@iZbp data]# vim myid
1
因?yàn)橹辉谝慌_(tái)服務(wù)器上安裝配置卿嘲,是個(gè)單點(diǎn)server.1,因此填1夫壁;
4> 編輯.bash_profile拾枣,增加zookeeper的環(huán)境變量
[root@iZbp data]# cd ~
[root@iZbp ~]# vim .bash_profile
# Zookeeper
export ZOOKEEPER_HOME=/data/zookeeper-3.4.9
export PATH=$ZOOKEEPER_HOME/bin:$PATH
[root@iZbp ~]# source .bash_profile
2.3 啟動(dòng)Zookeeper服務(wù)
1> 啟動(dòng)zookeeper服務(wù)
[root@iZbp ~]# cd /data/zookeeper-3.4.9/bin/
[root@iZbp bin]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /data/zookeeper-3.4.9/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
2> 配置zookeeper開機(jī)自動(dòng)啟動(dòng)
[root@iZbp bin]# vim /etc/rc.local
#執(zhí)行Zookeeper啟動(dòng)命令
/data/zookeeper-3.4.9/bin/zkServer.sh start
2.4 防火墻配置
1> 編輯防火墻配置文件,添加端口訪問規(guī)則
[root@iZbp ~]# vim /etc/sysconfig/iptables
# Zookeeper
-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
[root@iZbp ~]# chkconfig iptables on
[root@iZbp ~]# service iptables restart
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
2> 查看防火墻的規(guī)則
[root@iZbp ~]# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:88
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:21
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3306
9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2181
10 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2888
11 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3888
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
到這里,Linux環(huán)境下Dubbo的注冊(cè)中心Zookeeper單機(jī)版已經(jīng)部署完成了梅肤!
命令行測(cè)試
Windows Platform:
C:\Users\DevOps>telnet x.x.x.x 2181
Linux Platform:
# telnet 127.0.0.1 2181
3.0 補(bǔ)充:
1> 查看zookeeper進(jìn)程
[root@iZbp bin]# jps
3376 Bootstrap
12737 QuorumPeerMain
1042 jenkins.war
12787 Jps
QuorumPeerMain是zookeeper進(jìn)程司蔬,如果存在,表示啟動(dòng)正常
2> 查看zookeeper狀態(tài)
[root@iZbp bin]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /data/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: standalone
3> 查看zookeeper服務(wù)輸出的信息
[root@iZbp bin]# tail -500f zookeeper.out
4> 停止zookeeper服務(wù)
[root@iZbp11rfoyeescusr9ha9qZ bin]# zkServer.sh stop