在新装的centos7里面删除自带的jdk,安装自己的jdk1.8,然后安装zookeeper
[root@localhost bin]# pwd
/myzookeeper/zookeeper-3.4.9/bin
关闭防火墙:
[root@localhost bin]# systemctl stop firewalld
使用以下指令可以看到防火墙已经关闭了:
[root@localhost bin]# systemctl status firewalld
查看ip:
[root@localhost bin]# ifconfig
inet 后面会跟着12个数字
接着使用指令:
[root@localhost bin]# ping (接自己windows的ip地址)
出现几行信息后就可以按ctrl+c停止了,显示联通成功
(在windows也可以这样做,显示连接成功)
新建cloud-provider-payment8004
Pom.XML的内容和其他payment的不同之处在于将eureka的依赖换成zookeeper
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>
Application.yml的内容换成了:
server:
port: 8004
spring:
application:
name: cloud-provider-payment
cloud:
zookeeper:
connect-string: 192.168.174.128:2181
Dao和service就不写了,这里controller改成以下内容:
@RestController
public class PaymentController {
@Value("${server.port}")
private String serverPort;
@RequestMapping(value = "/payment/zk")
public String paymentzk() {
return "springcloud with zookeeper: " + serverPort + "\t" + UUID.randomUUID().toString();
}
}
接着回到linux启动zookeeper
[root@localhost bin]# ./zkServer.sh start
TIPS:重要踩坑记录1:
提示grep: /myzookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg: No such file or directory
解决方法:将zoo_simple.cfg原地复制一份命名为zoo.cf即可
[root@localhost bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /myzookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
接着:
[root@localhost bin]# ./zkCli.sh
Connecting to localhost:2181
…
…
[zk: localhost:2181(CONNECTED) 0]
再接着:
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 1] get /zookeeper
cZxid = 0x0
ctime = Wed Dec 31 16:00:00 PST 1969
mZxid = 0x0
mtime = Wed Dec 31 16:00:00 PST 1969
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
[zk: localhost:2181(CONNECTED) 2] ls /zookeeper
[quota]
做出各种操作都没问题,即代表链接成功
Idea里启动项目发现报错
去maven中可以看到zookeeper中的版本为3.5.3beta版本,linux是3.4.9,有jar包冲突
则需要在pom.XML中继续修改:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<!--先排除自带的zookeeper3.5.3-->
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--添加zookeeper3.4.9版本-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.9</version>
</dependency>
TIPS:重要踩坑记录2:
Centos重启后防火墙会重开,需要再次禁用,否则会报java.net.ConnectException: Connection timed out: no further information
启动项目,显示成功
启动成功前后的区别:
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 1] ls /
[services, zookeeper]
再来:
[zk: localhost:2181(CONNECTED) 2] ls /services
[cloud-provider-payment]
成功注册进来了
网页输入:http://localhost:8004/payment/zk
多次刷新结果会有不同
再接着输入:
[zk: localhost:2181(CONNECTED) 3] ls /services/cloud-provider-payment
[d78d8cc2-4a49-4b2b-a597-df64dfe4f287]
[zk: localhost:2181(CONNECTED) 4] ls /services/cloud-provider-payment/d78d8cc2-4a49-4b2b-a597-df64dfe4f287
[]
[zk: localhost:2181(CONNECTED) 5] get /services/cloud-provider-payment/d78d8cc2-4a49-4b2b-a597-df64dfe4f287
{"name":"cloud-provider-payment","id":"d78d8cc2-4a49-4b2b-a597-df64dfe4f287","address":"localhost","port":8004,"sslPort":null,"payload":{"@class":"org.springframework.cloud.zookeeper.discovery.ZookeeperInstance","id":"application-1","name":"cloud-provider-payment","metadata":{}},"registrationTimeUTC":1647715410900,"serviceType":"DYNAMIC","uriSpec":{"parts":[{"value":"scheme","variable":true},{"value":"://","variable":false},{"value":"address","variable":true},{"value":":","variable":false},{"value":"port","variable":true}]}}
cZxid = 0xa
ctime = Sat Mar 19 11:43:35 PDT 2022
mZxid = 0xa
mtime = Sat Mar 19 11:43:35 PDT 2022
pZxid = 0xa
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x17fa35debca0001
dataLength = 530
numChildren = 0
可以看到用get得到一个很大的json数据串