准备环境4台虚拟机 环境LNMP ,参照:CentOS7 一键安装LNMP环境
IP地址分别为 192.168.0.201,202,203,204
201当master ,202当backup 203和204当web应用
201和202分别安装 keepalived
首先要安装依赖包
yum -y install gcc pcre-devel zlib-devel openssl-devel popt-devel
下载keepalived
wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
解压
tar zxvf keepalived-1.2.7.tar.gz
编译安装
./configure
make
make install
执行如下命令,主要是把keepalived加到系统配置中让系统识别和开机启动
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
echo "/etc/init.d/keepalived start" >> /etc/rc.local
开始配置201和202的nginx的一模一样的没有任何区别,如下:
编辑 /usr/local/nginx/conf/nginx.conf
在server之前加
upstream hq.com {
# ip_hash;
server 192.168.203:80;
server 192.168.204:80;
}
添加虚拟主机
server {
listen 80;
server_name hq.com;
access_log off;
index index.html index.htm index.php;
location / {
proxy_pass http://hq.com;
}
location ~ [^/]\.php(/|$) {
#fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
expires 30d;
access_log off;
}
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
}
nginx配置完了,接下来配置keepalived
编辑201的配置 vi /etc/keepalived/keepalived.conf
只需要修改 global_defs 和 vrrp_instance VI_1的匹配段里面的内容如下就可以了
global_defs {
router_id NGINX_UPSTREAM
}
vrrp_instance VI_1 {
state MASTER #标识为主master
interface eth1 #需要绑定的网卡,默认是eth0,我这里是eth1根据实际情况而定,ifconfig命令查看
virtual_router_id 51 #这个与backup里面的路由id配置一样都是51
priority 100 #优先级别是100一定要大于backup里面的值
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.110 #虚拟ip地址,我们设置为110
}
}
编辑202的配置 vi /etc/keepalived/keepalived.conf
只需要修改 global_defs 和 vrrp_instance VI_1的匹配段里面的内容如下就可以了
global_defs {
router_id NGINX_UPSTREAM
}
vrrp_instance VI_1 {
state BACKUP #标识为从backup
interface eth1 #需要绑定的网卡,默认是eth0,我这里是eth1根据实际情况而定,ifconfig命令查看
virtual_router_id 51 #这个与master里面的路由id配置一样都是51
priority 99 #优先级别是99一定要小于master里面的值
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.110 #虚拟ip地址,我们设置为110
}
}
以上主从的配置区别只有两个地方:state MASTER/BACKUP 和 priority 100/99 优先级别
配置好以后,我们在201和202上分别启动keepalived
/etc/init.d/keepalived start
然后在201用命令 ip addr 结果如下:
我们发现多了一个ip为110,这个其实就是我们上面配置的虚拟ip
我们在202上面输入同样的命令 ip addr
并没有什么特殊的变化
我们把201的keepalived 停掉
[root@localhost conf]# /etc/init.d/keepalived stop
Stopping keepalived: [ OK ]
[root@localhost conf]#
再来202上输入 ip addr 如下:
会发现110的ip绑定到这边了。
然后去201上启动 keepalived 之后,再看ip绑定情况,发现201上又多了100,而202上没有了。
这样只是模拟故障的情况下,一台挂掉了,另外一台能继续工作。
203和204的web配置参考上一篇文章 :Nginx负载均衡
现在本机的hosts要指向到 192.168.0.110 hq.com
我们依然在本机浏览器中访问 hq.com
依然显示:this address is 204! 与 this address is 203! 的交替出现。
现在的架构就健壮一点了,201,202,203,204 现在我们关闭任何一台服务器。业务不会中断
这里只是简单介绍了 keeplived的基本的用途,有一定的了解。实际上并没有监控到nginx上,监控nginx需要脚本,请自行百度。。。
提示:可以用nmap 检查nginx的端口来判断状态。