簡(jiǎn)介
搭建ZK分布式模式,由2n+1臺(tái)服務(wù)器組成。
搭建集群有兩種方式:
- 單機(jī)多服務(wù):
- 不同服務(wù)使用不同的配置文件,配置不同的端口號(hào)等。
- 使用同一個(gè)配置不同的server.id,即IP相同,但是端口不同。
- 多機(jī)多服務(wù):各自配置zoo.cfg文件,互相加入各自的服務(wù)器列表。
節(jié)點(diǎn)概念
- Loader 主節(jié)點(diǎn):事務(wù)請(qǐng)求的唯一調(diào)度者和寫操作的處理者(從節(jié)點(diǎn)的寫操作需要轉(zhuǎn)發(fā)給主節(jié)點(diǎn),主節(jié)點(diǎn)決定編號(hào)、是否執(zhí)行操作)。
- Follower 從節(jié)點(diǎn):處理非事務(wù)(讀)請(qǐng)求;參與Loader選舉的投票,比如Loader 節(jié)點(diǎn)掛了之后選舉新的。
- Observer 觀察者節(jié)點(diǎn):訪問量大的時(shí)候,可以增減觀察者角色,處理部分請(qǐng)求。觀察者同步集群最新狀態(tài)變化,處理非事務(wù)請(qǐng)求, 對(duì)于事務(wù)請(qǐng)求,則會(huì)轉(zhuǎn)發(fā)給 Leader服務(wù)器進(jìn)行處理。 觀察者不參與任何形式的投票,只提供非事務(wù)服務(wù),通常用于在不影響集群事務(wù)處理能力的前提下提升集群非事務(wù)處理能力。
搭建集群
準(zhǔn)備
環(huán)境說明:
使用虛擬機(jī)啟動(dòng)三臺(tái)ubunut18的主機(jī),IP分別為192.168.204.175/176/177
修改host文件(一般位于C:\Windows\System32\drivers\etc
)文章來源:http://www.zghlxwxcb.cn/news/detail-767722.html
192.168.204.175 zk1
192.168.204.176 zk2
192.168.204.177 zk3
配置&啟動(dòng)
- 拉取鏡像
docker pull zookeeper:3.8.1
- 創(chuàng)建存儲(chǔ)數(shù)據(jù)的目錄
data
(自己命名)目錄和myid
文件,myid
文件存儲(chǔ)集群中此節(jié)點(diǎn)的唯一值。
mkdir zk_home
cd zk_home/
mkdir data
cd data
touch myid
# 集群內(nèi)唯一ID
echo 1 >> myid
# zk2
# echo 2 >> myid
# zk3
# echo 3 >> myid
- 創(chuàng)建一個(gè)存放配置文件的目錄,然后再創(chuàng)建
zoo.cfg
文件
# 創(chuàng)建存放配置文件的目錄
cd zk_home/
mkdir conf
cd zk_conf
touch zoo.cfg
- 將配置寫入
zoo.cfg
文件
# 啟動(dòng)成功的配置
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data
clientPort=2181
# server后面的數(shù)字是集群節(jié)點(diǎn)的唯一ID
server.1=zk1:2888:3888;2181
server.2=zk2:2888:3888;2181
server.3=zk3:2888:3888;2181
- 啟動(dòng)zookeeper容器。注意,不同的服務(wù)器
--hostname
不同。
docker run --name zookeeper --restart always -d \
-p 2888:2888 \
-p 3888:3888 \
-p 2181:2181 \
-v /home/liangshijie/zk_home/conf/zoo.cfg:/conf/zoo.cfg \
-v /home/liangshijie/zk_home/data:/data \
--hostname="zk1" \
zookeeper:3.8.1
- 檢查zk狀態(tài)
# 分別進(jìn)入zk1、zk2、zk3服務(wù)器,查看zk狀態(tài):
# 1.進(jìn)入容器
docker exec -it <ID> bash
# 2.進(jìn)入bin目錄
cd /apache-zookeeper-3.8.1-bin/bin
# 3.運(yùn)行命令查看狀態(tài)
zkServer.sh status
# 4.命令執(zhí)行結(jié)果
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
- 測(cè)試,使用zkCli登錄遠(yuǎn)程服務(wù)器,執(zhí)行操作命令
文章來源地址http://www.zghlxwxcb.cn/news/detail-767722.html
# 登錄zk3新增/app節(jié)點(diǎn),并設(shè)置值
zkCli.cmd -server zk3:2181
create /app
set /app 11
# 登錄zk1節(jié)點(diǎn),查看/app值
zkCli.cmd -server zk1:2181
get /app
到了這里,關(guān)于Zookeeper之基于Docker搭建集群的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!