在linux中执行? yum -y install keepalived
?或者
(执行过yum -y install keepalived后就不用执行2、3)
在 /usr/java下面创建keepalived文件夹
下载keepalived安装包
wget https://www.keepalived.org/software/keepalived-2.0.10.tar.gz
[root@localhost keepalived]# tar -zxvf keepalived-2.0.10.tar.gz
[root@localhost keepalived]#
yum -y install popt-devel libnl libnl-devel libnfnetlink-devel net-tools
[root@localhost ~]# cd keepalived-2.0.10
[root@localhost keepalived-2.0.10]#
./configure --prefix=/usr/java/keepalived
安装执行
[root@localhost keepalived-2.0.10]# make && make install
将脚本文件复制到/etc/init.d 文件夹里
cp /usr/java/keepalived/keepalived-2.0.10/keepalived/etc/init.d/keepalived /etc/init.d/
在etc里面创建 一个文件夹 keepalived
mkdir /etc/keepalived
将配置文件拷贝到刚才创建的文件夹里面
cp /usr/java/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
将keepalived的文件信息存放到/etc/sysconfig/里面
cp /usr/java/keepalived/keepalived-2.0.10/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
将可执行的文件存放到sbin文件夹里面
cp /usr/java/keepalived/sbin/keepalived /usr/sbin/
启动验证
[root@os004 keepalived-2.0.10]# systemctl start keepalived
[root@os004 keepalived-2.0.10]# systemctl status keepalived
[root@os004 keepalived-2.0.10]# ps -aux|grep keepalived
yum -y install psmisc
systemctl enable keepalived
注意启动nginx和keepslived时nginx先启动,可以两个都设置开机启动,这样可以避免错误
虚拟ip:192.168.195.33
? ? ? ? ? ? ? ?192.168.195.36
这里我是把平时使用192.168.195.33的作为主服务器,用主服务器克隆了一个从主服务器
(1)主服务器修改192.168.195.33的配置文件/etc/keepalived/keepalived.conf
# 全局配置
global_defs {
notification_email {
123@qq.com #设置报警邮件地址,可以设置多个,可以不设置
}
notification_email_from master@qq.com #发送通知邮件时邮件源地址
smtp_server 127.0.0.1 # 发送email时使用的smtp服务器地址,这里可以用本地的sendmail来实现
smtp_connection_timeout 30 #连接smtp连接超时时间
router_id 192.168.195.33 #定义路由标识信息,相同局域网唯一
}
vrrp_script aaa {
script "/usr/local/src/check_nginx_pid.sh" #最后手动执行下此脚本,以确保此脚本能够正常执行
interval 2 #(检测脚本执行的间隔,单位是秒)
weight -2 #当检查失败后,将vrrp_instance的priority减小2
fall 3 #连续监测失败3次,才认为真的健康检查失败。并调整优先级
rise 2 #连续监测2次成功,就认为成功。但不调整优先级
}
# 虚拟ip配置 vrrp
vrrp_instance VI_1 {
state MASTER # 指定keepalived的角色,MASTER为主,BACKUP为备,大写
interface ens32 # 当前进行vrrp通讯的网络接口卡(当前centos的网卡)
mcast_src_ip 192.168.195.33 #发送心跳包的源IP,可使用绑定的网卡IP
virtual_router_id 51 # 虚拟路由编号,主从要一直0-255
priority 100 # 优先级,数值越大,获取处理请求的优先级越高
advert_int 1 # 检查间隔,默认为1s(vrrp组播周期秒数)
authentication {
auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
auth_pass 1111
}
track_script {
aaa #(调用检测脚本)
}
virtual_ipaddress {
192.168.195.100 # 定义虚拟ip(VIP),可多设,每行一个
}
}
(2)备用服务器修改192.168.195.36的配置文件/etc/keepalived/keepalived.conf
# 全局配置
global_defs {
notification_email {
123@qq.com #设置报警邮件地址,可以设置多个,可以不设置
}
notification_email_from master@qq.com #发送通知邮件时邮件源地址
smtp_server 127.0.0.1 # 发送email时使用的smtp服务器地址,这里可以用本地的sendmail来实现
smtp_connection_timeout 30 #连接smtp连接超时时间
router_id 192.168.195.36 #定义路由标识信息,相同局域网唯一
}
vrrp_script chk_http_port {
script "/usr/local/src/check_nginx_pid.sh" #最后手动执行下此脚本,以确保此脚本能够正常执行
interval 2 #(检测脚本执行的间隔,单位是秒)
weight -2 #当检查失败后,将vrrp_instance的priority减小5
fall 3 #连续监测失败3次,才认为真的健康检查失败。并调整优先级
rise 2 #连续监测2次成功,就认为成功。但不调整优先级
}
# 虚拟ip配置 vrrp
vrrp_instance VI_1 {
state BACKUP # 指定keepalived的角色,MASTER为主,BACKUP为备,大写
interface ens32 # 当前进行vrrp通讯的网络接口卡(当前centos的网卡)
mcast_src_ip 192.168.195.36 #发送心跳包的源IP,可使用绑定的网卡IP
virtual_router_id 51 # 虚拟路由编号,主从要一直
priority 98 # 优先级,数值越大,获取处理请求的优先级越高
advert_int 1 # 检查间隔,默认为1s(vrrp组播周期秒数)
authentication {
auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
auth_pass 1111
}
track_script {
chk_http_port #(调用检测脚本)
}
virtual_ipaddress {
192.168.195.100 # 定义虚拟ip(VIP),可多设,每行一个
}
}
以下是针对nginx状态进行检测的脚本,第一次nginx服务死掉时,会重新启动,如果Nginx服务无法正常启动,则杀掉keepalived进程
vim /usr/local/src/check_nginx_pid.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
给脚本一个执行的权限
chmod a+x /usr/local/src/check_nginx_pid.sh
修改nginx.conf
后端传数据的两个服务器是192.168.195.34和35,在linux-nginx文章中写过
前端的地址根据keepalived.con的虚拟ip是192.168.195.100修改打包上传到linux
启动后端后,可以正常访问