一、系统环境及软件版本
centos 6.6 x64
keepalived-1.2.18.tar.gz
nginx
-1.6.2.tar.gz
主服务器:192.168.38.64
从服务器:192.168.38.66
vip :192.168.38.100
二、nginx安装 (主从安装一致)
1.安装依赖环境
复制代码 代码如下:
yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-developenssl openssl-devel
2.上传nginx到 opt 目录
3.解压安装
4.修改 nginx监听端口 及 index.html
# vi /opt/nginx/conf/nginx.conf
vi /opt/nginx/html/index.html
5. nginx 启动及常用命令
配置测试: /opt/nginx/sbin/nginx -t 出现如下界面说明配置没问题
启动 : /opt/nginx/sbin/nginx
重启 : /opt/nginx/sbin/nginx -s reload
停止 : /opt/nginx/sbin/nginx -s stop
6.开机启动 nginx
vi /etc/rc.local
加入: /opt/nginx/sbin/nginx
7.修改防火墙开放端口
vi /etc/sysconfig/iptables
添加 : -a input -p tcp -m state --state new -m tcp --dport 8888 -j accept
重启防火墙 :
service iptables restart
8.问题
启动 nginx遇到的问题
vi /etc/ld.so.conf
添加: /opt/nginx/lib/
9.nginx的负载均衡
nginx的负载均衡主要是 由upstream 这一模块完成
修改 nginx的配置文件
vi /data/nginx/conf/nginx.conf
添加如下内容:(web_pools 这个名称可变)
将server节点下的location节点中的proxy_pass配置为:http:// + upstream名称即可
结果如下:
其中 weight是权重 backup是备用服务器 ,只有其它服务器宕机后,备用服务器才会启动。
Nginx
在宝塔面板中轻松管理Nginx高性能Web服务器。提供可视化配置反向代理、负载均衡、SSL证书及HTTP缓存功能,一键优化高并发性能,助您高效搭建稳定、快速的网站运行环境。
下载
三、keepalived 安装
1.keepalived上传到 opt目录下
2.解压 安装
3.将keepalived 安装成 linux服务
4.设置 keepalived 服务开机启动
5.
修改 keepalived 配置文件
vi /etc/keepalived/keepalived.conf
6.编写 nginx 状态检测脚本
vi /etc/keepalived/nginx_check.sh
内容如下:
保存后,给脚本赋执行权限:
7.注意点:keepalived主从配置文件不同点
a.router_id 不一致
b.state 主服务器是master ,从服务器是 backup
c.priority 主服务器 大于 从服务器
8.keepalived 命令
启动 : servicekeepalived start
停止: servicekeepalived stop
重启: servicekeepalived restart
9.注意的问题
a.vip没绑定成功
解决方案:ip addr 查看 本地ip所在网卡的名称 ,然后修改 配置文件
vi /etc/keepalived/keepalived.conf
保存后 servicekeepalived restart 重启 keepalived服务即可
10.测试
启动主从nginx和keepalived 服务
主从服务器分别: ip add | grep 192.168.38.100
在192.168.38.64 可看到
同时 在192.168.38.66
当杀死 主服务器上的keepalived 则 从服务器
当再次启动主服务器上的keepalived则结果主服务器上有结果,从服务器上没结果。
当杀死 nginx后,keepalived则会自动启动 nginx服务
11. keepalived脑裂 (ip add | grep 192.168.38.100 在主从都有结果)
解决方案:防火墙问题
# tar -zxvf nginx-1.6.2.tar.gz
# cd nginx-1.6.2
# ./configure --prefix=/opt/nginx (prefix=/opt/nginx 这个指定的是 nginx目录)
# make && make install upstream web_pools {
server 10.0.6.108:7080weight=1;
server 10.0.0.85:8980weight=1;
} tar -zxvf keepalived-1.2.18.tar.gz
cd keepalived-1.2.18
./configure --prefix=/opt/keepalived
make && make installcp /opt/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /opt/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /opt/sbin/keepalived /usr/sbin/
ln -s /opt/keepalived/sbin/keepalived /sbin/chkconfig keepalived on ! configuration file for keepalived (!、#都是注释)
global_defs { #全局配置
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from alexandre.cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id lvs_01 #这个配置要唯一
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
interval 2 ## 检测时间间隔
weight -20 ## 如果条件成立,权重-20
}
vrrp_instance vi_1 { #实例 vi_1 名字可以随意 但是不建议修改
state master # 主服务器master 从服务器 backup
interface em1 # em1 网卡
virtual_router_id 51 #virtual_router_id 主备要一致
priority 100 # 优先级 数字越大 优先级越高 priority 的值 主服务器要大于 从服务器
advert_int 1 #设定master与backup负载均衡器之间同步检查的时间间隔,单位是秒
authentication { # 主从通信 验证类型及密码
auth_type pass #设置vrrp验证类型,主要有pass和ah两种
auth_pass 1111 #设置vrrp验证密码,在同一个vrrp_instance下,master与backup必须使用相同的密码才能正常通信
}
## 将 track_script 块加入 instance 配置块
track_script {
chk_nginx ## 执行 nginx 监控的服务
}
virtual_ipaddress {
192.168.38.100/24 #vrrp ha 虚拟地址 如果有多个vip,继续换行填写
}
} #!/bin/bash
a=`ps -c nginx –no-header |wc -l`
if [ $a -eq 0 ];then
/opt/nginx/sbin/nginx
sleep 2
if [ `ps -c nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fichmod +x/etc/keepalived/nginx_check.shiptables-iinput4-pvrrp-jaccept
service iptables save
service iptables restart