高可用的服务监控
A: keepalived 他是服务于服务端的,访问的虚拟ip
B: zk
rpc框架比较繁琐麻烦,
zk的最少安装的服务器为1台。但是但台服务器挂了,就完了,因为zk的安装节点为计数就可以的。
zk的集群结构
最少三台服务器,因为在配置文件中他们有配置哪一个主哪一些是从,如何选举呢其实在这涉及到一个算法
PAXOS 但是zk是把他简化之后的=》叫做 Zab来进行投票的
每个服务器的节点都会配置全部的服务器的信息,然后进行选举
1:假设有三台服务器,有一台服务器启动了,他就会去通过广播协议去找其他的服务器是否存在
2:他发现只有自己存在,但是在配置文件中配置了三台服务器(mini1,mini2,mini3),所以他会判读集群
至少有两台他才能工作,所以他就等,等待投票,然后在网络里面投票,但是他一投票发现就只有自己
自己就收了一张票,每个服务器节点都会有一个 myid ,因为在三台服务器中他会默认为得到2张票才会选取成leader
那他就等其他的服务器起来。等第二台服务器起来以后发现没有leader,那就重新在进行一次投票,两个节点自己投自己
互相再投,那就有相同的票数,有没有找出leader ,再进行选举,里面有一个规则以ip大的为主(假如节点2IP大)
那就节点2 就变成leader,节点1 为follower,,当节点3起来的话发现有leader那就不在比ip 自己就变成follower了
3: 当客户端访问的时候,如果访问的是follower,那follower就会把请求给leader.然后leader会同步所有follower
的信息为最新的状态
4:配置文件的 myid 和 配置文件的服务器的数量 是必须要配置的,进行选举用
5: linux 系统可以安装 yum install lrzsz 。。。。然后用rz命令
6:其中的文件夹目录元数据和日志最好是保存在,做了read的硬盘里面是比较安全的
7:其中的端口是基本上是默认的2181是客户端的端口, 2888的端口是leader和follower通信的端口
3888端口是选举投票的端口,
8:其中的 配置文件的 server.1 就是myid 。他的数据还要记录到dataDir 数据文件夹里面,然后在对应的 这个文件夹下麦纳
还要创建 myid这个文件夹,写入自己的 1 .
9:开启 zk 。 ./zkServer.sh start 查看器状态 ./zkServer.sh status
---命令行客户端
1:当zk的服务正常运作的话,
bin/zkCli.sh 进入命令行的模式
1.1 数据解析,zk里面的数据不是文件。而是一种 树的结构,数据结构,是通过树状目录来存储的
---zookpeer 其实就有两个作用 存数据拿数据 然后就是用 get /app1 watch 监听 app1目录树下的数据,如有更新
坐在客户端会有反馈的
二:集群式脚本自动化开启 zk
(linux的插曲: 再写shell的时候 经常会有shell失效。source 一下将子进程环境搞到当前目录下。export 是将父进程的参数以及变量是在子进程中生效:
)
每次启动zk的时候是,每台都需要执行一遍是十分的麻烦的,所以我们要写一个自动化脚本
则:我们有三个节点主节点 master slave1 slave2 脚本部署到主节点。$1 为脚本外面的参数 start 或者 stop 开启和关闭zk
三:zookeeper的Java的客户端
java 的 Api