部署准备:

  两台CentOS 7主机HA1和HA2

CentOS 7 基于rpm包安装Nginx:

  由于Base源中没有Nginx,所以要安装EPEL源,命令如下:

wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
yum repolist ##检查是否已添加至源列表

然后就可以用yum安装相应的rpm包了

主备模型部署开始:

  1.两台主机各自安装Nginx,并自行设置好测试页

  2.keepalived配置文件示例:

! Configuration File for keepalived

global_defs {
notification_email {
root@localhost
}
notification_email_from admin@ka.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
} /*进程状态探测脚本*/
/*务必要定义在实例之外,再在实例内调用*/
/*且脚本名字尽量不要用完整单词,如check等,我第一次用此名导致脚本执行失败,可用ck,chk等代替为妙*/
vrrp_script ck_nginx {
script "killall -0 nginx"
interval 2
weight -5
} vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100 dev eno16777736 label eno16777736:0
}
/*在实例内调用脚本*/
track_script {
ck_nginx
}
}

  3.开始测试效果:

    ①现在备节点启用keepalived,显示

    ②再在主节点开启keepalived,备节点的日志显示

    此时,访问nginx的结果是

    ③在主节点上停止nginx,再次访问服务,结果是HA2,符合需求


主主模型部署开始:

  HA1:          HA2:

    主          备

    备          主

  HA1配置文件:

! Configuration File for keepalived

global_defs {
notification_email {
root@localhost
}
notification_email_from admin@ka.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
} vrrp_script ck_nginx {
script "killall -0 nginx"
interval 2
weight -5
} vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100 dev eno16777736 label eno16777736:0
}
track_script {
ck_nginx
}
} vrrp_instance VI_2 {
state BACKUP
interface eno16777736
virtual_router_id 52
priority 98
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.111 dev eno16777736 label eno16777736:1
}
track_script {
ck_nginx
}
}

  HA2配置文件:

! Configuration File for keepalived

global_defs {
notification_email {
root@localhost
}
notification_email_from admin@ka.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
} vrrp_script ck_nginx {
script "killall -0 nginx"
interval 2
weight -5
} vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 51
priority 98
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100 dev eno16777736 label eno16777736:0
}
track_script {
ck_nginx
}
} vrrp_instance VI_2 {
state MASTER
interface eno16777736
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.111 dev eno16777736 label eno16777736:1
}
track_script {
ck_nginx
}
}

  测试开始:

  ①现在HA2上开启keepalived,效果如下:

  ②再在HA1上开启,效果是:

  ③回到HA2,使用ifconfig查看结果是:

注意:

  脚本中用到的killall命令如果是最小化安装默认是没有此命令的,需要运行:

yum -y install psmisc

KeepAlived主备/主主模型高可用Nginx的更多相关文章

  1. 4、keepalived高可用nginx负载均衡

    keepalived: HTTP_GET        //使用keepalived获取后端real server健康状态检测 SSL_GET(https)  //这里以为这后端使用的是http协议 ...

  2. Keepalived+LVS实现LNMP网站的高可用部署

    Keepalived+LVS实现LNMP网站的高可用部署   项目需求   当我们访问某个网站的时候可以在浏览器中输入IP或者域名链接到Web Server进行访问,如果这个Web Server挂了, ...

  3. keepalived安装配置实战心得(实现高可用保证网络服务不间断)

    keepalived安装配置实战心得(实现高可用保证网络服务不间断) 一.准备2台虚拟机     安装的系统是:centos-release-7-1.1503.el7.centos.2.8.x86_6 ...

  4. KeepAlived主备模型高可用LVS

    部署前准备: 1.至少4台主机:两个Director(HA1,HA2),两个Real Server(RS1,RS2) 2.Director之间时间必须同步,且关闭各主机的防火墙和Selinux 3.出 ...

  5. 【 Linux 】Keepalived实现双主模型高可用集群

    要求:    1. 两台web服务器安装wordpress,数据库通过nfs共享    2. 使用keepalived实现双主模型 环境:    主机:        系统:CentOS6.7 x64 ...

  6. Docker Compose搭建Redis一主二从三哨兵高可用集群

    一.Docker Compose介绍 https://docs.docker.com/compose/ Docker官方的网站是这样介绍Docker Compose的: Compose是用于定义和运行 ...

  7. Mssql主备见证的弊端及主备模式主down掉怎么恢复

    mssql主备见证有个没有解决的问题,mssql的主备是针对单个库的,有时候单个或多个库主备切换了,但是整个主数据库并没有挂掉,并且还运行着其他的库,程序检测到的数据库连接是正常的,只是部分库连接不了 ...

  8. nginx+keepalived+tomcat+memcache实现双VIP高可用及Session会话保持

    Nginx+Keepalived+Tomcat+Memcached 实现双VIP负载均衡及Session会话保持 IP 信息列表: 名称         IP                      ...

  9. lvs+keepalived部署k8s v1.16.4高可用集群

    一.部署环境 1.1 主机列表 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 lvs-keepal ...

随机推荐

  1. 1、NASA Super Cloud Library(SCL)

    Empowering Data Management, Diagnosis, and Visualization of Cloud-Resolving Models (CRM) by Cloud Li ...

  2. 【转】MySQL数据丢失讨论

    原文http://blog.sae.sina.com.cn/archives/4091 1.   概述 很多企业选择 MySQL都会担心它的数据丢失问题,从而选择Oracle,但是其实并不十分清楚什么 ...

  3. TODO的使用

    在vs2012中使用TODO添加注释

  4. 一个.NET通用JSON解析/构建类的实现(c#)转

    转自:http://www.cnblogs.com/xfrog/archive/2010/04/07/1706754.html NET通用JSON解析/构建类的实现(c#) 在.NET Framewo ...

  5. C连接MySQL数据库开发之Windows环境配置及测试(转)

    http://blog.csdn.net/xyang81/article/details/26814633(转)

  6. Android自动化学习笔记之Robotium:学习官网实例

    ---------------------------------------------------------------------------------------------------- ...

  7. oracle计算是否是同一周

    函数已经解决跨年问题 select to_char(date'2016-12-31','iW') from dual; select to_char(date'2017-01-01','iW') fr ...

  8. 汇编初入门debug实操

    修改cs:ip的值 jmp 段地址:偏移地址 //在汇编指令中用,不是在debug上用的 如 jmp 2AE3:3 //执行后CS=2AE3H ip=0003H 若只修改IP内容 jmp 某一个合法的 ...

  9. MFC 自绘按钮 消息响应

    单检测到按下消息时,发送一个消息 m_pParent->PostMessage(WM_COMMAND, IDC_BUTTON1); 然后再在消息映射里建立映射. ON_COMMAND(IDC_B ...

  10. SQLAlchemy模型使用

    SQLAchemy模型使用 简介: SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用 ...