您的位置:首页 > 运维架构 > Nginx

Nginx + keepalived 实现高可用HA 【双主架构】

2017-08-21 09:24 666 查看

1) Keepalived 双主配置环境

    主要目的是让两台机器互为主从概念,即在keepalived.conf文件中交叉配置实现互为主从功能。



与上一篇配置环境描述一样,只是在135与136机器上的Keepalived配置文件中配置两个VIP内容,让他们两个Keepalived都有一个MASTER与BACKUP节点,只是两台机器交叉配置, 最终通过DNS的IP指向(A记录) 指向两个VIP地址,实现双主Keepalived功能。

        135与136的机器上安装了Nginx与Keepalived

        137与138的机器上安装了JDK1.8与Tomcat环境

2) 在Master1与Master2机器上的 /etc/keepalived/keepalived.conf 文件交叉修改

    2.1) Master1 机器文件配置内容

            注意查看 "【】"中的注解说明。
#全局定义块
global_defs {
# 邮件通知配置
notification_email {
1349594420@qq.com
}
notification_email_from 1349594420@qq.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL    ## 标识本节点的字条串,通常为hostname
}

vrrp_script chk_nginx {
script "/data/sh/check_nginx.sh"  ## 检查Nginx是否存活的一个角本
interval 2                        ## 重试两次
weight 2                          ## 权重
}

#VIP 1
vrrp_instance VI_1 {
state MASTER                     ## 【改成MASTER】状态,表示开机启动的状态
interface eth0                   ## 网卡(注意, 去CentOS系统中看一下网卡名称是多少, CentOS安装默认叫Auto eth1, 用#ip addr list命令查看一下)
lvs_sync_daemon_interface eth0   ## 互联通讯的网卡
virtual_router_id 151            ## 路由ID, 局域网内的路由ID,必须唯一性
priority 100                     ## 优先级(Master1机器如设置为100, Master2机器得设置为90)
advert_int 5
nopreempt                        ## 不抢占
authentication {                 ## 认证
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.73.100           ## 前调用户访问就是这个IP (在Master1与Master2两台电脑的eth0网卡上虚拟一个IP地址)
}
track_script {
chk_nginx
}
}

#VIP 2  【追加此VIP2】
vrrp_instance VI_2 {
state BACKUP                     ## 状态,表示开机启动的状态
interface eth0                   ## 网卡(注意, 去CentOS系统中看一下网卡名称是多少, CentOS安装默认叫Auto eth1, 用#ip addr list命令查看一下)
lvs_sync_daemon_interface eth0   ## 互联通讯的网卡
virtual_router_id 152            ## 【路由必须与MASTER不一样】路由ID, 局域网内的路由ID,必须唯一性
priority 90                      ## 【优先级必须比MASTER要小】优先级(Master1机器如设置为100, Master2机器得设置为90)
advert_int 5
nopreempt                        ## 不抢占
authentication {                 ## 认证
auth_type PASS
auth_pass 2222                   ## 【密码必须与MASTER不一样】
}
virtual_ipaddress {
192.168.73.110           ## 【第二个虚拟IP】前调用户访问就是这个IP (在Master1与Master2两台电脑的eth0网卡上虚拟一个IP地址)
}
track_script {
chk_nginx                ## 【chk_nginx不用改】
}
}

    2.2) Master2 机器文件配置内容

            注意,Master2的机器与Master1的机器 keepalived文件区别,只在于VIP1与VIP2的state与priority的两个属性交叉对换一下即可,其它属性都不需要去调整。
#scp /etc/keepalived/keepalived.conf root@192.168.73.136:/etc/keepalived


#全局定义块
global_defs {
# 邮件通知配置
notification_email {
1349594420@qq.com
}
notification_email_from 1349594420@qq.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL    ## 标识本节点的字条串,通常为hostname
}

vrrp_script chk_nginx {
script "/data/sh/check_nginx.sh"  ## 检查Nginx是否存活的一个角本
interval 2                        ## 重试两次
weight 2                          ## 权重
}

#VIP 1
vrrp_instance VI_1 {
state BACKUP                     ## 【与VIP2节点对调】状态,表示开机启动的状态
interface eth0                   ## 网卡(注意, 去CentOS系统中看一下网卡名称是多少, CentOS安装默认叫Auto eth1, 用#ip addr list命令查看一下)
lvs_sync_daemon_interface eth0   ## 互联通讯的网卡
virtual_router_id 151            ## 路由ID, 局域网内的路由ID,必须唯一性
priority 90                      ## 【与VIP2节点对调】优先级(Master1机器如设置为100, Master2机器得设置为90)
advert_int 5
nopreempt                        ## 不抢占
authentication {                 ## 认证
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.73.100           ## 前调用户访问就是这个IP (在Master1与Master2两台电脑的eth0网卡上虚拟一个IP地址)
}
track_script {
chk_nginx
}
}

#VIP 2
vrrp_instance VI_2 {
state MASTER                     ## 【与VIP1节点对调】状态,表示开机启动的状态
interface eth0                   ## 网卡(注意, 去CentOS系统中看一下网卡名称是多少, CentOS安装默认叫Auto eth1, 用#ip addr list命令查看一下)
lvs_sync_daemon_interface eth0   ## 互联通讯的网卡
virtual_router_id 152            ## 路由ID, 局域网内的路由ID,必须唯一性
priority 100                     ## 【与VIP1节点对调】优先级(Master1机器如设置为100, Master2机器得设置为90)
advert_int 5
nopreempt                        ## 不抢占
authentication {                 ## 认证
auth_type PASS
auth_pass 2222
}
virtual_ipaddress {
192.168.73.110           ## 前调用户访问就是这个IP (在Master1与Master2两台电脑的eth0网卡上虚拟一个IP地址)
}
track_script {
chk_nginx
}
}


   2.3) 过程的测试常用命命令

#/etc/init.d/keepalived restart   -- 启动 keepalived
#tail -fn 100 /var/log/messages   -- 查看 keepalived 状态日志


     如以下提供来源其它的测试两个图片



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: