在Virtualbox中创建zookeeper集群(Ubuntu18.04)

ZooKeeper的安装非常简单,因为它是采用Java语言编写的,在运行它之前需要安装Java虚拟机,在这里我们部署一个由三个ZooKeeper节点组成的集群。将三个节点放在三台Ubuntu操作系统上,它们的IP地址分别是192.168.1.121、192.168.1.122、192.168.1.123。

安装jre:

junyu@mycom:~$ sudo apt install default-jre -y
下载ZooKeeper安装包,建立一个ZooKeeper目录,将其解压:
junyu@mycom:~$ wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
junyu@junyu:~$ sudo mkdir /app && sudo cp zookeeper-3.4.14.tar.gz /app
junyu@junyu:~$ cd /app && sudo tar zxvf zookeeper-3.4.14.tar.gz 
junyu@mycom:/app$ sudo ln -s zookeeper-3.4.14 zookeeper

复制虚拟机

并重新生成mac网卡地址,同时配置静态ip

分别新建zookeeper数据目录

在目录中创建一个myid文件,写入ID号,1代表集群中的第一台服务器,其他两台类同:

junyu@mycom:~$ sudo passwd root
junyu@mycom:~$ su root
root@junyu:/app# mkdir -p /var/zookeeper/data
root@junyu:/app# echo 1 > /var/zookeeper/data/myid

分别编辑zookeeper/conf/zoo.cfg文件

root@mycom:/home/junyu# mv /app/zookeeper/conf/zoo_sample.cfg zoo.cfg
root@mycom:/home/junyu# gedit /app/zookeeper/conf/zoo.cfg

文件内容如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper/data
clientPort=2181
server.1=192.168.1.201:2888:3888
server.2=192.168.1.202:2888:3888
server.3=192.168.1.203:2888:3888

分别执行zkServer.sh脚本启动服务:

root@mycom:/home/junyu# cd /app/zookeeper/bin/
root@mycom:/app/zookeeper/bin# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /app/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

遇到问题,myid

 root@mycom:/app/zookeeper/bin# cat zookeeper.out
2019-04-02 19:20:32,598 [myid:] - INFO  [main:QuorumPeerConfig@136] - Reading configuration from: /app/zookeeper/bin/../conf/zoo.cfg
2019-04-02 19:20:32,620 [myid:] - INFO  [main:QuorumPeer$QuorumServer@184] - Resolved hostname: 192.168.1.122 to address: /192.168.1.122
2019-04-02 19:20:32,620 [myid:] - INFO  [main:QuorumPeer$QuorumServer@184] - Resolved hostname: 192.168.1.121 to address: /192.168.1.121
2019-04-02 19:20:32,621 [myid:] - INFO  [main:QuorumPeer$QuorumServer@184] - Resolved hostname: 192.168.1.123 to address: /192.168.1.123
2019-04-02 19:20:32,621 [myid:] - INFO  [main:QuorumPeerConfig@398] - Defaulting to majority quorums
2019-04-02 19:20:32,624 [myid:] - ERROR [main:QuorumPeerMain@88] - Invalid config, exiting abnormally
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing /app/zookeeper/bin/../conf/zoo.cfg
	at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:156)
	at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:104)
	at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:81)
Caused by: java.lang.IllegalArgumentException: serverid “1” is not a number
	at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:422)
	at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:152)
	... 2 more
Invalid config, exiting abnormally

分别修改/var/zookeeper/data/myid为1、2、3并重启整个集群

root@mycom:/app/zookeeper/bin# echo 1 > /var/zookeeper/data/myid
root@mycom:/app/zookeeper/bin# ./zkServer.sh restart
ZooKeeper JMX enabled by default
Using config: /app/zookeeper/bin/../conf/zoo.cfg
ZooKeeper JMX enabled by default
Using config: /app/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... ./zkServer.sh: 第 182 行: kill: (3589) - 没有那个进程
STOPPED
ZooKeeper JMX enabled by default
Using config: /app/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
root@mycom:/app/zookeeper/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /app/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
root@mycom:/app/zookeeper/bin# jps
3691 QuorumPeerMain
3741 Jps

遇到问题,拒绝连接

2019-04-02 19:28:49,081 [myid:3] - WARN  [/192.168.1.123:3888:QuorumCnxManager@584] - Cannot open channel to 2 at election address /192.168.1.122:3888
java.net.ConnectException: 拒绝连接 (Connection refused)
	at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:400)
	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:243)
	at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:225)
	at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:402)
	at java.base/java.net.Socket.connect(Socket.java:591)
	at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:558)
	at org.apache.zookeeper.server.quorum.QuorumCnxManager.handleConnection(QuorumCnxManager.java:486)
	at org.apache.zookeeper.server.quorum.QuorumCnxManager.receiveConnection(QuorumCnxManager.java:386)
	at org.apache.zookeeper.server.quorum.QuorumCnxManager$Listener.run(QuorumCnxManager.java:754)
2019-04-02 19:28:49,081 [myid:3] - INFO  [/192.168.1.123:3888:QuorumPeer$QuorumServer@184] -

发现ip地址及对应的myid和zoo.cfg中不一致(此步骤之前在/etc/hosts中注释了127.0.0.1一行,影响未知)

root@mycom:/app/zookeeper/bin# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:64:8b:3a brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.121/24 brd 192.168.1.255 scope global noprefixroute enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::d1f1:3794:4fa4:5411/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
root@mycom:/app/zookeeper/bin# cat /var/zookeeper/data/myid
2
root@mycom:/app/zookeeper/bin# cat ../conf/zoo.cfg 
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper/data
clientPort=2181
server.1=192.168.1.121:2888:3888
server.2=192.168.1.122:2888:3888
server.3=192.168.1.123:2888:3888
root@mycom:/app/zookeeper/bin# 

改正重启

root@mycom:/app/zookeeper/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /app/zookeeper/bin/../conf/zoo.cfg
Mode: leader
root@mycom:/app/zookeeper/bin# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:76:cf:f9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.123/24 brd 192.168.1.255 scope global noprefixroute enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::5b5a:828b:4b64:a52e/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
root@mycom:/app/zookeeper/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /app/zookeeper/bin/../conf/zoo.cfg
Mode: follower
root@mycom:/app/zookeeper/bin# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:64:8b:3a brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.121/24 brd 192.168.1.255 scope global noprefixroute enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::d1f1:3794:4fa4:5411/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

root@mycom:/app/zookeeper/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /app/zookeeper/bin/../conf/zoo.cfg
Mode: follower
root@mycom:/app/zookeeper/bin# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:7c:a5:9e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.122/24 brd 192.168.1.255 scope global noprefixroute enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a222:234f:6537:d311/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
root@mycom:/app/zookeeper/bin# 

猜你喜欢

转载自blog.csdn.net/weixin_41845533/article/details/88977898