**本文属自我学习,不适合转载**

1. 准备工作

1.1 网络方面的准备工作

1.1.1 创建安全组

注意这里要添加 vrrp 协议支持,否则 keepalived 将无法正常工作。

1.1.2 创建网络

1.1.3 创建路由器,绑定EIP,并连接上面的网络

1.1.4 创建 VIP 的弹性网卡,设置安全组,绑定EIP

1.2 创建两个弹性云服务器,并绑定EIP

1.3 在虚机的网卡上设置允许的地址对

添加:(需要在两个虚机的网卡上添加允许的地址对,从而允许该网卡上使用 vip 的IP发出去的网络包能够被发出)

结果:

2. 安装 keepalived和httpd

(1).通过SSH登录 master,安装 keepalived,并做如下配置

安装 httpd,设置其监听端口为81。并在 /var/www/html/index.html 文件中写入 master.

需要设置 www 目录的访问权限 sudo chmod 755 html -R,否则会收到 403 错误。

将 httpd 和 keepalived 设置为自动启动:

  • sudo chkconfig keepalived on
  • sudo chkconfig httpd on

(2). 在 slave 上做类似的配置,priority 设置为 50.

(3). 在本地和虚机的EIP上测试 http 81 端口,能返回正确的字符串

(4). 能看到 VRRP 网络包

(5). 使用 ip a 命令能看到 master 上的 vip (注意使用 ifconfig 命令看不到)

(6). 能看到vrrp协议的网络包

(7). 能看到浏览器请求时的 vip 发出的网络包

3. 测试

(0)在浏览器上打开 120.132.124.82:81,刷新,查看其返回的字符串。根据字符串判断是哪个节点上返回的。

(1). master 和 salve 都运行的情况下,返回 master

(2). 将 master 关机,刷新,返回 slave

(3). 将 master 开机,刷新,返回 master

(4). 将 slave 关机,刷新,返回 master

此过程中,在 slave 上,运行 sudo tcpdump -n -i eth0 proto 112 命令,能看到 vrrp 主节点的变化过程:

//master 和 slave 都活着时,master 是主
18::48.557128 IP 172.17.100.201 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length
::49.460185 IP 172.17.100.201 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length
//master 关机,slave 升为主
18::50.265691 IP 172.17.100.202 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length
::51.266660 IP 172.17.100.202 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length
::38.304008 IP 172.17.100.202 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length
//master 重启后,它变为主
::41.307612 IP 172.17.100.201 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length
::41.307739 IP 172.17.100.202 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length
::41.308134 IP 172.17.100.201 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length
::42.309298 IP 172.17.100.201 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length

(5). 将安全组里面的 vrrp 协议删除,则 keepalived 出现脑裂,即两个都是 master。

(6). 将当前 MASTER 节点的虚拟网卡上的“允许的地址对”删除,则无法通过浏览器访问 vip:81. 这是因为,该虚机网卡发出的使用vip作为源地址的网络包都被阻止了。这是因为默认在所有虚拟网卡上开启了安全限制,只允许发出跟虚拟网卡自身ip和mac匹配的网络包。

(7). 将当前 SLAVE 节点的虚拟网卡上的“允许的地址对”删除,则不影响通过浏览器访问 vip:81,因为此时该网卡上没有vip;但是,vip 主备切换后,则无法再访问 vip 了。

参考链接:

在海航云中部署 keepalived的更多相关文章

  1. 腾讯云部署keepalived高可用

    使用背景: 通过调用python SDK在腾讯云手动部署keepalived高可用 部署环境 系统:centos7.3 Master:192.168.0.100 Slave:192.168.0.14 ...

  2. suse 12 编译部署Keepalived + nginx 为 kube-apiserver 提供高可用

    文章目录 编译部署nginx 下载nginx源码包 编译nginx 配置nginx.conf 配置nginx为systemctl管理 分发nginx二进制文件和配置文件 启动kube-nginx服务 ...

  3. MariaDB Galera Cluster 部署 + keepalived实现高可用

    MariaDB Galera Cluster 部署 MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力 ...

  4. Nginx 集群部署(Keepalived)

    # Nginx集群部署 # 当我们的用户同时访问量达到一定量的时候,一台服务器是不够用的 # 这个时候我们需要解决这个问题肯定是要添加新的服务器去处理用户访问 # 多台服务器处理用户访问就需要我们集群 ...

  5. 部署keepalived

    下载 keepalived-1.1.20.tar.gz tar  -xvf  keepalived-1.1.20.tar.gz [root@yoon export]# cd keepalived-1. ...

  6. ansible自动部署Keepalived实现Nginx服务双机热备

    脚本实现通过ansible-playbook自动化安装Keepalived和配置,主要解决问题如下: Keepalived自动化安装: keepalived_vrid配置,自动根据vip获取最后一段作 ...

  7. python程序—一键部署keepalived+lvs

    一个DS 两个RS keepalived端在/root下准备好已经修改好的配置文件 import paramiko # keepalived端 需要修改的信息 keepalived_ip='192.1 ...

  8. 十一.keepalived高可用服务实践部署

    期中集群架构-第十一章-keepalived高可用集群章节======================================================================0 ...

  9. K8s多节点部署+负载均衡+keepalived ——囊萤映雪

    K8s多节点部署+负载均衡+keepalived --囊萤映雪 1.多节点master2 部署 2.负载均衡部署+keepalived 1.多节点master2部署: #从master01节点上拷贝证 ...

随机推荐

  1. ptrdiff_t 和 size_t

    size_t和ptrdiff_t常常用来指示数组长度. size_t常用于表示数组的大小,可以一般的将他看为 typedef unsigned int size_t,实质是一个无符号整形.包含在头文件 ...

  2. 新一代 CI 持续集成工具 flow.ci 正式开源

    很高兴地宣布 flow.ci 在 Apache-2.0 协议下正式开源了.flow.ci 是国内首套开源持续集成(CI) 解决方案,帮助企业团队实现开发流程(build-test-deploy)自动化 ...

  3. mssql执行计划查看的一些知识

    在MSSQL中,查看较慢语句的执行计划,就是一个比较直观的方式, 如果查看执行计划呢: 1.从右到左,从上到下的顺序阅读执行计划2.执行计划中每个图标代表一个运算符,总开销为100%3.数据从右向左在 ...

  4. Nginx 搭建rtmp直播服务器

    1.到nginx源码目录新建个rtmp目录 ,进入  git clone https://github.com/arut/nginx-rtmp-module.git   2.重编译nginx 代码如下 ...

  5. 最近整理AI相关感想

    前言 目前笔者致力于 在AI 开发研究,四大平台里,百度AI 提供 的开发者资料是最全,开发的友好度也是最高的,很多都已经集成在SDK中,支持许多语言体系. 其实 作为公司层面的考虑,针对技术的研究出 ...

  6. iOS中常见的锁

    多线程的安全隐患 一块资源可能会被多个线程共享,也就是说多个线程可能会访问同一块资源. 比如多个线程同时操作同一个对象,同一个变量. 当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题. 比 ...

  7. WPF 外发光效果

    WPF的滤镜效果,目前框架自带的只有BlurEffect和DropShadowEffect两种.DropShadowEffect为投影效果,只能显示黑灰颜色的效果,如果想让一个边框达到别的颜色的滤镜效 ...

  8. keepalived实现服务高可用

    第1章 keepalived服务说明 1.1 keepalived是什么? Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可 ...

  9. 自动化运维工具——puppet详解(二)

    一.class 类 1)什么是类? 类是puppet中命名的代码模块,常用于定义一组通用目标的资源,可在puppet全局调用: 类可以被继承,也可以包含子类: 具体定义的语法如下: class NAM ...

  10. Android官方技术文档翻译——Gradle 插件用户指南(5)

    昨晚把第五章未译完的几句话攻克了.只是第六章没怎么译,明后天又是周末,假设周一前第六章翻译完的话,周一再发第六章. 本文译自Android官方技术文档<Gradle Plugin User Gu ...