Linux集群使用多台服务器搭建成一个集群来运行应用程序,不仅可以避免单点故障,还能提升服务器的承载能力 集群从功能实现上分为两种:高可用集群和负载均衡集群 高可用集群,当一台服务器宕机不能提供服务时,还有另外的服务器顶替 负载均衡集群,把用户的请求分摊到多台服务器上 搭建高可用集群高可用集群,即“HA集群”,也称作“双机热备” 常见实现高可用的开源软件有heartbeat和keepalived keepalived工作原理VRRP协议,是实现路由高可用的一种通信协议,在这个协议里会将多台功能相同的路由器组成一个小组,这个小组里有一个master主机和n个backup备用机,工作时,master会通过组播的形式向各个backup发送VRRP协议的数据包,当backup收不到master发来的VRRP数据包时,就会认为master宕机了。 keepalived就是采用VRRP协议实现的高可用。keepalived要有三个模块,分别是core、check和vrrp。其中core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析;check模块负责健康检查;vrrp模块用来实现VRRP协议 实现Wed高可用VIP:虚拟ip,服务器靠这个ip对外提供服务,当master机器宕机时,VIP被分配到backup 安装服务准备两台机器,一台master,一台backup 在两台机器上安装keepalived和nginx服务 # yum install -y keepalived # yum install -y epel-release # yum install -y nginx 配置keepalived文件编辑master的配置文件 # vi /etc/keepalived/keepalived.conf global_defs { notification_email { kei@keilinux.com //定义接收告警的人} notification_email_from root@keilinux.com //定义发邮件地址 smtp_server 127.0.0.1 //定义发邮件地址,127.0.0.1为使用本机自带邮件服务器发送 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script kei_nginx { script "/usr/local/sbin/check_ng.sh" //自定义脚本,该脚本为监控nginx服务的脚本 interval 3 //每隔3s执行一次该脚本 } vrrp_instance VI_1 { state MASTER //角色为master interface ens33 //针对哪个网卡监听VIP virtual_router_id 51 priority 100 //权重为100,master要比backup大 advert_int 1 authentication { auth_type PASS auth_pass kei>com //定义自定义密码 } virtual_ipaddress { 192.168.37.100 //定义VIP } track_script { kei_nginx //定义监控脚本 } } 退出保存 编辑backup的配置文件 # vi /etc/keepalived/keepalived.conf global_defs { notification_email {kei@keilinux.com } notification_email_from root@keilinux.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script kei_nginx { script "/usr/local/sbin/check_ng.sh" interval 3 } vrrp_instance VI_1 { state BACKUP //角色为backup interface ens33 virtual_router_id 51 priority 90 //比master数值小 advert_int 1 authentication { auth_type PASS auth_pass kei>com } virtual_ipaddress { 192.168.37.100 } track_script { kei_nginx } } 退出保存 编辑监控脚本(此脚本两台机器配置一样)定义一个监控nginx服务的脚本 # vi /usr/local/sbin/check_ng.shd=`date --date today %Y%m%d_%H:%M:%S` //时间变量,用于记录日志 n=`ps -C nginx --no-heading|wc -l` 计算nginx进程数量if [ $n -eq "0" ]; then systemctl start nginx n2=`ps -C nginx --no-heading|wc -l` if [ $n2 -eq "0" ]; then echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log systemctl stop keepalived fi fi //如果进程为0,则启动nginx,并再次检测进程数量 //如果还为0,说明nginx无法启动,此时需要关闭keepalived 其他配置(两台机器操作)给脚本权限 # chmod a x /usr/local/sbin/check_ng.sh 启动keepalived # systemctl start keepalived 查看状态在master机器上 查看IP # ip addr
查看nginx服务进程 # ps aux |grep nginx 验证高可用先把master上的nginx关掉 # systemctl stop nginx 等3s再次检测端口,发现服务被启动 模拟master宕机 # iptables -I OUTPUT -p vrrp -j DROP 在backup机器上查看是否被设置VIP
来源:https://www./content-4-791051.html |
|