架构图
##keepalived 使用教程
###安装
* 安装相关组建
>yum -y install openssl openssl-devel popt popt-devel
* 下载
>wget http://www.keepalived.org/software/keepalived-1.2.15.tar.gz
* 解压
>tar zxvf keepalived-1.2.15.tar.gz #解压安装包
* 编译
>./configure --prefix=/usr/local/keepalived --sbindir=/usr/local/keepalived/sbin #
* 安装
> make && make install
* 换成服务
<---拷贝keepalived相关启动命令--->
# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
<---将keepalived启动脚本添加到系统服务--->
# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
# chkconfig --add keepalived
# chkconfig --level 2345 keepalived on
<---创建keepalived相关配置文件--->
# mkdir -p /etc/keepalived
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived
<---启动--->
service keepalived start
### 配置
* 列表
slb 192.168.202.3
master 192.168.201.4
slave 192.168.201.5
vip 192.168.201.100
* master 配置
ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.202.5 netmask 255.255.255.0 broadcast 192.168.202.255
// 这里的网卡为 ens33
vim /etc/keepalived/keepalived.conf
修改为如下
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
#添加脚本检查,可以不用
vrrp_script chk_nginx {
script "/etc/keepalived/check_nginx.sh"
interval 2
weight -5
fall 3
rise 2
}
virtual_ipaddress {
#vip地址
192.168.202.100
}
#触发脚本
track_script {
chk_nginx
}
}
* backup 配置
vim /etc/keepalived/keepalived.conf
修改为如下
vrrp_script chk_nginx {
script "/etc/keepalived/check_nginx.sh"
interval 2
weight -5
fall 3
rise 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
#触发脚本
track_script {
chk_nginx
}
virtual_ipaddress {
#vip地址
192.168.202.100
}
}
重启服务
* 和nginx 搭配使用
如果两台nginx服务器其中有一台nginx 挂了,重启不了,则关闭keepalived进程 脚本为如下
vim /etc/keepalived/check_nginx.sh :
#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/usr/local/bin/nginx
sleep 2
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/etc/init.d/keepalived stop
fi
fi
* 材料
192.168.202.4 keepalived nginx
192.168.202.5 keepalived nginx
192.168.202.100 keepalived vip
192.168.202.6 web服务器
192.168.202.7 web服务器
* 配置负载均衡器
在服务器上 192.168.202.4 和 192.168.202.5 上
upstream slb_test {
#ip_hash; #根据ip哈希,进行转发
server 192.168.202.6;
server 192.168.202.7;
}
server{
listen 80 default_server;
server_name www.lnmp.org;
index index.html index.htm index.php;
root /home/wwwroot/default;
location / {
proxy_pass http://slb_tuzuu;
}
access_log /home/wwwlogs/access.log;
}
备注: 这里如果做所有的请求转发的就按照以上的配置,去掉php的配置
* 配置keepalived 在 192.168.202.4 和 192.168.202.5