当前位置:   article > 正文

Linux · Zookeeper的安装、使用及常用命令,虚拟机ping外网,linux防火墙设置

Linux · Zookeeper的安装、使用及常用命令,虚拟机ping外网,linux防火墙设置

近期在学习Zookeeper,将服务注册进去并能够正常使用。由于Zookeeper依赖于Java和Linux,所以中间还碰到了一些虚拟机上的问题,在此记录一下,共同学习一下。


一:Zookeeper的安装与启动

Zookeeper是一个分布式协调服务,一般用来做服务注册中心。Zookeeper的数据是存储在内存中的,因此效率较高,内部数据的存储类似于windows的文件存储结构,采用分层存储。不同的是,Zookeeper的每个节点称为ZNode,每个节点下都可以存储数据,但是每个节点存储的数据不能超过1M

1:软件环境

首先需要确保linxu中已经安装了JDK7版本或以上,因为Zookeeper的服务器是由Java创建的。

2:下载安装包并解压

官网:https://zookeeper.apache.org/

点击对应版本下载即可,一般不要下载最新的,下载个稳定版即可。

 下载完成之后解压即可。

  1. //切换到opt目录
  2. cd /opt
  3. //新建zookeeper文件夹
  4. mkdir zookeeper
  5. //切换到zookeeper文件夹
  6. cd /opt/zookeeper
  7. //解压到当前目录,注意这里是你下载的版本压缩包
  8. tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz

3:配置

解压完毕后,需要添加一些配置,为以后的运行做准备。

1:创建存储目录

  1. //切换目录
  2. cd /opt/zooKeeper/
  3. //创建存储目录
  4. mkdir zkdata
  5. //进入conf目录
  6. cd /apache-zookeeper-3.7.1-bin/conf
  7. //拷贝一个配置文件
  8. cp zoo_sample.cfg zoo.cfg
  9. //修改zoo.cfg配置文件,指定存储目录
  10. vim zoo.cfg
  11. //打开文件之后按 i 进行编辑

 设置存储目录即可。

2:设置 JAVA_HOME 路径

这一步很重要,不设置的话在之后启动zookeeper客户端时会报错:

JAVA_HOME is not set and java could not be found in PATH.

原因是zookeeper在启动时会执行两个文件:zkServer.sh  和  zkEnv.sh,其中zkEnv.sh的文件中会检查JAVA_HOME,获取不到就会报错。

我们安装JDK时的JAVA_HOME设置在  /etc/profile  文件下,将其复制到zkEnv.sh中即可。注意等号前后不要有空格。

4:启动 

注意:需切换到 apache-zookeeper-3.7.1-bin/bin 目录下再执行命令。

zookeeper服务常用命令:

  1. //启动服务
  2. ./zkServer.sh start
  3. //查看状态
  4. ./zkServer.sh status
  5. //停止服务
  6. ./zkServer.sh stop
  7. //重启服务
  8. ./zkServer.sh restart

zookeeper服务端常用命令:

  1. //连接ZooKeeper服务端
  2. ./zkCli.sh
  3. //断开连接
  4. quit
  5. //查看根节点目录
  6. ls /
  7. //查看注册中心中的服务
  8. ls /services
  9. //查看指定服务
  10. ls /services/服务名
  11. //获取指定服务详细信息(Json格式)
  12. get /services/服务名/服务id

至此,zookeeper安装与启动完毕。


二:虚拟机外网ping通,防火墙端口开放

1:ping通外网

上面我们的服务已经启动成功了,但是现在还不能和idea配合使用将服务注册进去,我们首先要确保我们的虚拟机能够ping通外网。

如果是使用VMware连接的虚拟机,先确认网络的连接方式。有三种。

桥接模式:让虚拟机成真正的计算机,和主机在同一个局域网下,有着相同的网关、子网掩码
NTA模式:网络地址转换,虚拟机的网络都是由主机的 DHCP 服务器进行分配的
仅主机:虚拟机只可以与主机互相访问,不可以连接外网

我这里使用的是NAT模式,只介绍下这个模式。

打开VMware的编辑 -> 虚拟网络编辑器,打开后点击 NAT设置获取网关及子网掩码,点击DHCP设置获取IP地址起始位置。如果想要更改,需要点击更改设置。

 之后进入虚拟机修改网络文件。

注意:CentOS7.x网卡文件是 ifcfg-ens33,CentOs6.x网卡文件是 ifcfg-eth0

  1. //修改网络文件
  2. vim /etc/sysconfig/network-scripts/ifcfg-ens33
  3. //按 i 开始编辑
  4. //主要把这几个修改了
  5. BOOTPROTO: 改成静态的,不然重启后ip会被重新分配
  6. IPADDR: 当前虚拟机的ip,取值范围在DHCP设置中查看的ip范围
  7. NETMASK: 子网掩码,NTA设置的固定值
  8. GATEWAY: 网关,NTA设置的固定值
  9. //修改之后重启网卡
  10. systemctl restart network
  11. //测试是否能ping通外网
  12. ping www.baidu.com

 2:防火墙端口开放

Linux下防火墙有两种分别是 iptables firewalld,在centos7之前centos用的防火墙是iptables,自从centos7过后防火墙的使用就从iptables变成了firewalld。相较于传统的防火墙管理工具,firewalld加入了zone(区域)的概念,大体就是实现了防火墙策略之间的快速切换。

 防火墙命令:

  1. //查看防火墙状态(running开启,dead关闭)
  2. systemctl status firewalld
  3. //启动防火墙
  4. service firewalld start
  5. //重启防火墙(服务)
  6. service firewalld restart
  7. //关闭防火墙
  8. service firewalld stop
  9. //查询端口是否开放(zookeeper默认端口号2181)
  10. firewall-cmd --query-port=2181/tcp
  11. //开放端口
  12. firewall-cmd --permanent --add-port=2181/tcp
  13. //移除端口
  14. firewall-cmd --permanent --remove-port=2181/tcp
  15. //重启防火墙(配置)
  16. firewall-cmd --reload

将zookeeper端口号放行,之后才可以注册服务进去。

三:服务注册进Zookeeper

 1:添加依赖

一般添加第一个和Springboot整合的依赖即可,这里提供一个报错解决的方案。

  1. <!--springboot整合zookeeper客户端-->
  2. <dependency>
  3. <groupId>org.springframework.cloud</groupId>
  4. <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
  5. <!--排除zookeeper自带的版本-->
  6. <exclusions>
  7. <exclusion>
  8. <groupId>org.apache.zookeeper</groupId>
  9. <artifactId>zookeeper</artifactId>
  10. </exclusion>
  11. </exclusions>
  12. </dependency>
  13. <!--和linux上安装的zookeeper版本同步,该步骤省略也可以,使用默认的,个别可能会报错-->
  14. <dependency>
  15. <groupId>org.apache.zookeeper</groupId>
  16. <artifactId>zookeeper</artifactId>
  17. <version>3.7.1</version>
  18. </dependency>

2:添加配置

linux的IP加Zookeeper端口号,默认2181

  1. #配置Spring
  2. spring:
  3. application:
  4. name: cloud-provider-payment #微服务名称,注册中心显示
  5. cloud:
  6. zookeeper:
  7. connect-string: 192.168.58.128:2181 #zookeeper机器加端口号

3:添加注解

主启动类添加注解,注意不是Eureka的注解

  1. @SpringBootApplication
  2. //该注解用于向使用consul或者zookeeper作为注册中心时注册服务
  3. @EnableDiscoveryClient
  4. public class PaymentMain8004 {
  5. public static void main(String[] args) {
  6. SpringApplication.run(PaymentMain8004.class, args);
  7. }
  8. }

4:启动

项目启动成功之后可以在Zookeeper中查看注册进去的服务。

这里使用上面提到过的一些命令,可以看到我们注册进去的服务。

需要注意的是,Zookeeper默认创建的是临时节点,如果服务挂了,会在一段时间后直接清除,

大概一二十秒,而不是像Eureka那样保持心跳。在这点上,Zookeeper做的很是干脆。

  1. [zk: localhost:2181(CONNECTED) 0] ls /
  2. [services, zookeeper]
  3. [zk: localhost:2181(CONNECTED) 1] ls /services
  4. [cloud-consumer-order, cloud-provider-payment]
  5. [zk: localhost:2181(CONNECTED) 2] ls /services/cloud-provider-payment
  6. [04b2cf44-95a2-4d29-b452-620e7d4ec53d]
  7. [zk: localhost:2181(CONNECTED) 3] get /services/cloud-provider-payment/04b2cf44-95a2-4d29-b452-620e7d4ec53d
  8. //后面省略
  9. {"name":"cloud-provider-payment","id":"04b2cf44-95a2-4d29-b452-...

其他的功能就和我们使用Eureka等注册中心一样了,每个注册进去的服务都可以通过服务名进行其他服务的调用。


到这里就结束了,这里只是介绍Zookeeper的简单入门用法。希望能够帮到大家,如果哪里有问题,欢迎大家留言指正。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/976111
推荐阅读
相关标签
  

闽ICP备14008679号