mac系统,使用virtualbox,安装ubuntu server。就按照推荐的方式一步步安装,具体可以参考How to Install Ubuntu Server on VirtualBox
一共安装了两个ubuntu,分别命名为ubuntu1,ubuntu2。在ubuntu1和ubuntu2上分别安装java、zookeeper。拟最终用这两个ubuntu系统,和本地mac,构建一个zookeeper集群。
java的安装,只需要将.tar.gz文件,解压缩,然后放置到/usr/local目录下,然后配置环境变量即可;同样的,zookeeper也是,解压,放在/usr/local目录下,然后配置环境变量。
配置环境变量,在~/.bashrc
文件末尾,添加
export JAVA_HOME=/usr/local/jdk1.8.0_211
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.13
export PATH=${ZOOKEEPER_HOME}/bin:$PATH
执行source ~/.bashrc
,使得环境变量配置生效。
在ubuntu1和ubuntu2上都执行以上操作,配置java和zookeeper环境。
对于zookeeper,因为是构建集群,因此相对单机zookeeper环境,多一点 步骤。
ubuntu2@ubuntu2:/usr/local/zookeeper-3.4.13/conf$ mv zoo_sample.cfg zoo.cfg
sudo vim /etc/hosts
添加ip路由地址
192.168.31.164 mac
192.168.31.37 ubuntu1
192.168.31.97 ubuntu2
修改zookeeper的配置
ubuntu2@ubuntu2:/usr/local/zookeeper-3.4.13/bin$ vim ../conf/zoo.cfg
dataDir=/usr/local/zookeeper-3.4.13/local_ubuntu_data
dataLogDir=/usr/local/zookeeper-3.4.13/log
server.1=mac:2888:3888
server.2=ubuntu1:2888:3888
server.3=ubuntu2:2888:3888
进入到每个zookeeper的数据目录下,新建文件myid,并且在每个文件里面写上内容,分别是1、2、3。这三个数字,需要分别和zookeeper中的配置相互对应。例如我将ubuntu2机器中myid文件内容设置为3,ubuntu1机器中myid文件内容设置为2,mac机器中myid文件内容设置为1。
ubuntu2@ubuntu2:/usr/local/zookeeper-3.4.13/local_ubuntu_data$ touch myid
ubuntu2@ubuntu2:/usr/local/zookeeper-3.4.13/local_ubuntu_data$ vim myid
最后分别进入到zookeeper的bin目录之后,启动zookeeper,都启动之后,分别进入到每一台机器,可以查看到当前状态。状态如下:
ubuntu2@ubuntu2:/usr/local/zookeeper-3.4.13/bin$ ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: follower
ubuntu1@ubuntu1:/usr/local/zookeeper-3.4.13/bin$ ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: follower
# username @ username-MacBook-Pro in /usr/local/zookeeper-3.4.13/bin on git:master x [22:36:14]
$ ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: leader
以上,就是全部步骤。用到了本地的/etc/hosts,修改ip路由地址映射,这样当ip地址变化之后,每次只需要改变此文件中的ip,不用修改zookeeper中的配置。
以下,将对一些具体步骤,稍微多点说明。
1.安装ssh服务
在虚拟机的Ubuntu系统安装ssh服务,其安装命令为:
sudo apt-get install openssh-server
查询其服务时候安装成功的命令:
netstat -tlp
安装成功会包含有如下显示:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN -
2. 桥接网卡连接方式
修改VirtualBox虚拟机的网络连接方式,其默认为NAT连接方式,我们将其改为桥接网卡连接方式:这一步很关键
备注:这里主要参考链接1中的。
修改虚拟机中Ubuntu的IP地址,使其与外面系统在同一网段,例如我的外面机器IP为192.168.1.101
将其内部IP地址修改如下:
(注:有的桌面版的安装好之后就直接可以使用,网络都不必设置即可,这个看情况而定)
sudo vim /etc/network/interfaces
将这个interfaces文件的增加以下内容:
auto eth0
iface eth0 inet static
address 192.168.1.113
netmask 255.255.255.0
gateway 192.168.1.1
然后查看DNS文件,一般默认即为正确的:
sudo vim /etc/resolv.conf
然后重启网络,或者重启系统即可,然后我们发现使用远程连接软件putty或者加强版的pietty连接或者Xshell5链接即可。
期间遇到的问题
1.在virtualbox中安装ubuntu的时候,会有下面的报错。
(1). virtual ubuntu failed unmounting /lib/modules
(2). failed unmounting /lib/modules
(3). failed unmounting mount unit for subiquity revision 664
(4). failed unmounting mount unit for core revision 6350
后来是在virtualbox的setting ---- storage ---- controller IDE ---- Empty ---- optical Drive,这里选择下载好的ubuntu-18.04.2-server-amd64.iso安装文件即可。
2.服务没有正常启动
ubuntu1@ubuntu1:/usr/local/zookeeper-3.4.13/bin$ ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.13/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
可以通过bin目录下面的zookeeper.out来查看问题原因
查看tail -n 200 /usr/local/zookeeper-3.4.13/bin/zookeeper.out
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing /usr/local/zookeeper-3.4.13/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: /usr/local/zookeeper-3.4.13/local_ubuntu_data/myid file is missing
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:408)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:152)
... 2 more
Invalid config, exiting abnormally
出现这个问题,是因为在zookeeper配置时候,缺少这样的一步操作:进入到dataDir
中,新建一个文件myid,并且在myid文件中写上对应的数字。
3.时间不对
date -R
tzselect
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
sudo date -s MM/DD/YY //修改日期
sudo date -s hh:mm:ss //修改时间
在修改时间以后,修改硬件CMOS的时间
sudo hwclock --systohc //非常重要,如果没有这一步的话,后面时间还是不准
重启之后,时间保留在上次关机时候的时间。
网上同步时间
1. 安装ntpdate工具
# sudo apt-get install ntpdate
2. 设置系统时间与网络时间同步
# ntpdate cn.pool.ntp.org
3. 将系统时间写入硬件时间
# hwclock --systohc
参考链接:
1 . https://blog.csdn.net/u014796999/article/details/52576846
2. https://blog.csdn.net/zhengchaooo/article/details/79500032