去官网下载的话需要注册才能下载,随便在网上找了一个15的版本,发现安装失败。网上的解决办法也是千奇百怪没有尝试。然后下载了14的版本,安装成功。
首先去阿里的镜像官网找到centos7相应版本下载,地址:https://mirrors.aliyun.com/centos/7.7.1908/isos/x86_64/
下载镜像成功后。使用vmware打开,安装centos7系统。过程很简单。
网上的教程都是通过nat模式配置,多数都是centos7中是如何操作的,这里随便贴一篇:https://blog.csdn.net/akipa11/article/details/81414875。如果按照这个操作能成功的话是可以的。但是有时候我们的电脑网络可能没有配置好,会出现一些问题。所以从头捋一下。
按照上边的文章,使用nat模式连接。需要用到vmnet8网络。这个网络设置在我们的电脑、控制面板\网络和 Internet\网络连接中,右键属性。打开ipv4设置。然后选择手动ip地址。
ip地址:xxx.xxx.xxx.x。随便设置,如:192.168.45.100。
子网掩码:255.255.255.0
然后设置虚拟机的网络,设置nat模式下
子网ip:xxx.xxx.xxx.0。跟net8的前三段一样,如:192.168.45.0。
子网掩码:255.255.255.0
网关:xxx.xxx.xxx.2。跟net8的前三段一样,如:192.168.45.2。
其他centos网络设置参考上边文章即可。
通过ping 主机ip:192.168.45.100测试是否能ping通,或者ping www.baidu.com测试。
针对设置的ip不起作用,还会重新生成的解决方案,
首先通过命令,查看当前的ip
ip addr show
然后记录截图中的mac地址,
然后停止掉NetworkManager服务,因为它跟networkservice冲突。
systemctl stop NetworkManager
systemctl disable NetworkManager
然后修改网络配置文件,增加HWADDR=上边截图的mac地址
vi /etc/sysconfig/network-scripts/ifcfg-ens33
最后重启reboot。ip就会变为你设置的ip。
如果通过网络下载一些文件,需要用到wget,系统默认是没有这个命令的,需要通过yum来安装,命令:
yum -y install wget
其中-y代表弹出的提示默认选y就是yes。
打开虚拟机之后,会发现界面不是很大,这块就需要修改虚拟机的分辨率,具体参考这篇文章:https://cloud.tencent.com/developer/article/1466317。文章中有个别命令带箭头 需要换成--。
CRT是远程命令行工具,FX是支持图形化文件远程传递.直接去官网下载即可,现在下载需要注册登陆。下载之后可以试用30天,否则需要购买,可以去网络上搜索序列号破解版。不过网络上这方面的key比较少。
使用CRT操作起来还是非常方便的,可以开多个窗口,复制粘贴也很方便。用FX传文件更是没得说。
也可以通过windows共享文件夹,centos挂在该文件夹的方式实现共享,参考:http://www.mamicode.com/info-detail-2425151.html
许多应用都需要jdk的支持,所以优先安装jdk,首先去官网下载所需要的安装包,我这边下载的是linux x64.rpm包。
安装方法及环境变量配置参见:https://www.cnblogs.com/fanqisoft/p/10460583.html
在usr目录下新建两个文件夹,分别为apps和tools分别用来存放安装的应用和下载的文件。
然后进入到tools目录,使用wget方式下载zookeeper,zookeeper下载地址可以去官网找下载地址。
将tools目录下的gz包解压到app目录下
tar -zxvf apache-zookeeper-3.5.6-bin.tar.gz -c /usr/app
因为要把zookeeper/bin目录放入到环境变量,所以尽量不要带zookeeper版本号,否则以后升级需要修改配置文件。
那如何处理呢?通过建立引用的形式,命令如下:
ln -s apache-zookeeper-3.5.6-bin/ zookeeper
这样的话,zookeeper文件夹就是一个引用,它实际指向zookeeper-3.5.6文件夹。所以ln指令的作用就是解决这种需求。如果很多目录文件夹都需要内部包含一个文件,可以通过ln指令来操作。这样就省去了复制多个文件。省去一些空间。
接着修改环境变量
vi /etc/profile
G到最后一行
新增两行代码
export ZK_HOME=/usr/app/zookeeper
export PATH=$ZK_HOME/bin:$PATH
接着进入zookeeper目录下conf ,复制一份zoo_sample.cfg文件。打开进行修改。
先修改datadir。
首先创建usr/data/zookeeper文件夹。因为是树级文件夹创建,需要mkdir -p指令。 创建成功后,修改dataDir目录为:/usr/data/zookeeper
通过命令启动服务,在conf目录下输入命令:
zkServer.sh start
通过
zkServer.sh status
查看状态。
克隆3台虚拟机。打开后先通过命令修改主机名:
vi /etc/hostname
然后修改IP地址
vi /etc/sysconfig/network-scripts/ifcfg-ens33
有些系统可能自动分配ip就不用配置ip这块了,通过ip addr show可以看到ip。然后reboot重启
这样配置好4台服务器。
然后进入zookeeper/conf,zoo.cfg文件。增加server的配置。
server.1=192.168.43.129:2888:3888
server.2=192.168.43.130:2888:3888
server.3=192.168.43.131:2888:3888
server.4=192.168.43.132:2888:3888:observer
前边的server.1中1代表当前server的myid。需要在usr/data/zookeeper目录下配置
echo 1 > myid
cat myid //查看myid
同理4台机器都这样配置,记得在第4台observer的zookeeper的conf.zoo.cfg文件中,增加
peerType=observer
最后,别忘记关闭防火墙
systemctl stop firewalld.service //暂时关闭
systemctl disable firewalld.service //永久关闭
流程必须先暂时关闭,再永久关闭,因为防火墙现在是开着的,需要先关闭。
可以通过systemctl status firewalld.service查看防火墙状态是否关闭。
最后启动zookeeper/
zkServer.sh start //启动服务
zkServer.sh status //查看服务状态
zkServer.sh stop //停止服务
先执行启动服务,把4台都启动,然后查看每台的状态。
你会看到1台是leader,2台follower,1台observer。
启动客户端
zkCli.sh -server 192.168.43.129:2181
上边的ip地址随意是哪台zookeeper的ip都可以。
启动后 输入-help查看操作命令
具体操作指令参考文章:https://blog.csdn.net/dandandeshangni/article/details/80558383
使用idea新建一个空的maven工程,
在pom文件中导入zk依赖:
org.apache.zookeeper
zookeeper
3.5.6
junit
junit
4.13-beta-3
接着就是写java代码了,首先我们要学会zk的指令,在上一步多练习一下,熟悉指令后,写java代码就很容易了。
首先就是创建客户端连接:
zk=new ZooKeeper(“192.168.43.129:2181”, 20000, null)
然后通过该连接就可以调各种api了。
//创建节点,可以创建四种节点,通过createMode来区分节点类型,如持久节点,持久顺序节点,临时节点,临时顺序节点等。
zk.create(final String path, byte data[], List acl,
CreateMode createMode)
//获取某节点下的子节点
zk.getChildren()
//获取某节点的数据
zk.getData()
//删除某节点
zk.delete()
。。。。
。。。。
其实只要对指令熟悉,这些javaapi是好写的,这里就不一一列举了。
想省事的话可以去网上搜一个工具类,好好封装一下。
常用的zookeeper java客户端:
ZooKeeper原生Java API的不足之处:
Apache curator:
参考文章:https://blog.51cto.com/zero01/2109137,该文章对curator做了详细的介绍以及代码演示。
理论部分就不重复写了,参考文章:https://blog.csdn.net/kongmin_123/article/details/82081953
代码实现部分:基于curator实现:https://blog.csdn.net/u010028869/article/details/84034261
参考文章:上边curator文章里的实现https://blog.51cto.com/zero01/2109137。