博主本人平和谦逊,热爱学习,读者阅读过程中发现错误的地方,请帮忙指出,感激不尽


架构图:

本次实验严格按照下图完成

1.系统环境设置

1.1SELinux设置

vim /etc/selinux/config
输入:
disabled

reboot
getenforce

1.2设置时间同步

timedatectl set-timezone Asia/Shanghai
date

1.3注意事项

mycat/keepaliced不能安装在同一台服务器,否则VIP设置不成功

2.安装(keepalived)

参考:https://www.cnblogs.com/ivictor/p/5261445.html

2.1软件安装

[root@keepalived01 ~]# yum install keepalived -y

2.2设置配置

[root@keepalived01 ~]# cd /etc/keepalived/
[root@keepalived01 keepalived]# cp -a keepalived.conf keepalived.conf.bak
[root@keepalived01 ~]# cat   /etc/keepalived/keepalived.conf 
[root@keepalived01 ~]# cat   /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
     root@localhost
     #设置报警邮件地址,可以设置多个,每行一个。
     #需开启本机的sendmail服务
   }
   notification_email_from root@localhost
 #设置邮件的发送地址
   smtp_server 127.0.0.1
 #设置smtp server地址
   smtp_connect_timeout
#设置连接smtp server的超时时间
   router_id LVS_DEVEL01
 #表示运行keepalived服务器的一个标识。发邮件时显示在邮件主题的信息
}

vrrp_instance VI_1 {
    state MASTER
 #指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器
    interface ens32
 #指定HA监测网络的接口
    virtual_router_id
 #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识。即同一vrrp_instance下,MASTER和BACKUP必须是一致的
    priority
 #定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级
    advert_int
 #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {
 #设置验证类型和密码
        auth_type PASS
 #设置验证类型,主要有PASS和AH两种
        auth_pass
 #设置验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
    }
    virtual_ipaddress {
#设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
        192.168.247.200
    }
}

virtual_server  {
 #设置虚拟服务器,需要指定虚拟IP地址和服务端口,IP与端口之间用空格隔开
    delay_loop
 #设置运行情况检查时间,单位是秒
    lb_algo rr
 #设置负载调度算法,这里设置为rr,即轮询算法
    lb_kind DR
 #设置LVS实现负载均衡的机制,有NAT、TUN、DR三个模式可选
    nat_mask 255.255.255.0
    persistence_timeout
 #会话保持时间,单位是秒。这个选项对动态网页是非常有用的,为集群系统中的session共享提供了一个很好的解决方案。
 #有了这个会话保持功能,用户的请求会被一直分发到某个服务节点,直到超过这个会话的保持时间。
 #需要注意的是,这个会话保持时间是最大无响应超时时间,也就是说,用户在操作动态页面时,如果50秒内没有执行任何操作
 #那么接下来的操作会被分发到另外的节点,但是如果用户一直在操作动态页面,则不受50秒的时间限制
    protocol TCP
 #指定转发协议类型,有TCP和UDP两种

    real_server  {
 #配置服务节点1,需要指定real server的真实IP地址和端口,IP与端口之间用空格隔开
        weight
 #配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,设置权值大小可以为不同性能的服务器
 #分配不同的负载,可以为性能高的服务器设置较高的权值,而为性能较低的服务器设置相对较低的权值,这样才能合理地利用和分配系统资源
        TCP_CHECK {
 #realserver的状态检测设置部分,单位是秒
            connect_timeout
 #表示3秒无响应超时
            nb_get_retry
 #表示重试次数
            delay_before_retry
#表示重试间隔
            connect_port
        }
    }
    real_server  {
        weight
        TCP_CHECK {
            connect_timeout
            nb_get_retry
            delay_before_retry
            connect_port
        }
    }
}
[root@keepalived01 ~]#

2.3新增mycat设置

在两台MyCAT服务器上为lo:0绑定VIP地址、抑制ARP广播
(务必开通两台mycat:8066的防火墙,之前用来连接mysql不需要开通,所以一直没开通,今天做高可用集群需要用到这台机的8066端口,我就是忘记开了,一直校验不成功QAQ)
[root@mycat01 init.d]# firewall-cmd --permanent --add-port=/tcp
[root@mycat01 init.d]# firewall-cmd --reload
[root@mycat01 init.d]#
[root@mycat01 init.d]# pwd
/etc/rc.d/init.d
[root@mycat01 init.d]# touch realserver
[root@mycat01 init.d]#  realserver
[root@mycat01 init.d]# vim realserver
#!/bin/bash
#description: Config realserver
VIP=192.168.247.200
/etc/rc.d/init.d/functions
case "$1" in
start)
       /sbin/ $VIP netmask 255.255.255.255 broadcast $VIP
       /sbin/route add -host $VIP dev lo:
       " >/proc/sys/net/ipv4/conf/lo/arp_ignore
       " >/proc/sys/net/ipv4/conf/lo/arp_announce
       " >/proc/sys/net/ipv4/conf/all/arp_ignore
       " >/proc/sys/net/ipv4/conf/all/arp_announce
       sysctl -p >/dev/>&
       echo "RealServer Start OK"
       ;;
stop)
       /sbin/ down
       /sbin/route del $VIP >/dev/>&
       " >/proc/sys/net/ipv4/conf/lo/arp_ignore
       " >/proc/sys/net/ipv4/conf/lo/arp_announce
       " >/proc/sys/net/ipv4/conf/all/arp_ignore
       " >/proc/sys/net/ipv4/conf/all/arp_announce
       echo "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit
esac
exit 

2.4启动(realserver )

[root@keepalived01 init.d]# service realserver start
[root@keepalived01 init.d]# ip addr   (ifconfig无法查看配置的虚拟IP)
    ....
    inet  brd
   ...

2.5启动(keepalived)

[root@mycat01 ~]# systemctl enable keepalived.service
[root@mycat01 ~]# systemctl start keepalived.service     

3.测试验证

3.1验证连通性:

[root@keepalived01 ~]# ipvsadm -L   (看到如下信息表示VIP映射成功)
IP Virtual Server version  (size=)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  keepalived01: rr persistent
  ->           Route
  ->           Route                     

3.2验证高可用

在一台客户机上执行SQL(不能在keepalived和mycat服务器上)
mysql -uroot -p123456 -h  -Dmycat -e 'select * from localtion'
执行结果如下:经过对比,每次查询的结果都不一样,是因为前面的两台mycat,只有一台做了分库分表,所以可以验证两次查询经过的是不同的mycat服务器。

使用 ipvsadm -L命令可以查询SQL的流向,且只有keepalived83才能看见。

关闭247.83服务器后继续查询,发现84已经自动切换为主keepalived,至此高可用验证成功

当83重启时,查询作用会主动切换为83,因为权重部分83为100,84为99


转载需注明出处

高可用(keepalived+lvs)的更多相关文章

  1. 高可用Keepalived+LVS搭建流程

    本流程搭建1个master,1个backup节点的Keepalived,使用lvs轮询2个节点的服务. 一.使用版本 CentOS 7.7 Keepalived 1.3.5 ipvsadm 1.27( ...

  2. linux 高可用----keepalived+lvs

    什么是高可用? HA(high availability)即高可用性:就是在高可用集群中发生单点故障时,能够自动转移资源并切换服务,以保证服务一直在线的机制. LVS LVS:(linux virtu ...

  3. DR模式下的高可用的LVS(LVS+keepalived)

    一.keepalived 在DR模式下,使用Keepalived实现LVS的高可用.Keepalived的作用是检测服务器的状态,如果有一台web服务器 宕机,或工作出现故障,Keepalived将检 ...

  4. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  5. 集群高可用之lvs+keepalive

    集群高可用之lvs+keepalive keepalive简介: 负载均衡架构依赖于知名的IPVS内核模块,keepalive由一组检查器根据服务器的健康情况动态维护和管理服务器池.keepalive ...

  6. 解决nginx负载均衡高可用keepalived只针对物理机的问题

    在高可用keepalived软件,在默认的情况下仅仅在对方机器宕机或keepalived停掉的时候才会接管业务. 但是在实际工作过程中,例如在nginx负载均衡工作实例中,nginx服务已停止,而ke ...

  7. mysql高可用之LVS + KEEPALIVE + MYSQL

    1.架构图 注意 (一)   Mysql需要把bind-address的配置去掉,否则无法实现虚拟ip访问 (二)   关闭所有linux防火墙:/sbin/iptables –F(可能没用) (三) ...

  8. 实现高可用-Keepalived

    简介 Keepalived是HA Cluster(High Availability Cluster,高可用集群)的一个服务软件,用来防止单点故障. Keepalived采用VRRP(virtual ...

  9. nginx1.14.0版本高可用——keepalived双机热备

    nginx不支持主从,所以我们需要使用keepalive支持高可用. keepalived重要知识点 在局域网内,每个主机上各安装一个keepalived,注意关闭防火墙firewalld,然后设定一 ...

  10. 部署高可用keepalived组件

    本文档讲解使用 keepalived 和 haproxy 实现 kube-apiserver 高可用的步骤: keepalived 提供 kube-apiserver 对外服务的 VIP: hapro ...

随机推荐

  1. 【mac相关bash文件】

    mac 下 关于 .bashrc 和 .bash_profile 1.首先.bashrc 可能自带的系统里没有这个文件. 2.bash_profile  里边一半放的是PATH相关. 3. .bash ...

  2. 用python批量修改音频ID3等标签

    使用的模块是eyeD3 一.eyeD3的安装 1.安装msgpack,不安装会报错distributed 1.21.8 requires msgpack, which is not installed ...

  3. Linux文件目录常用命令

    查看目录内容 ls 切换目录 cd 创建和删除操作 touch rm mkdir 拷贝和移动文件 cp mv 查看文件内容 cat more grep 其他 echo 重定向 > 和 >& ...

  4. mongodb的常见使用命令行

    由于cms工程要连接mongodb所以需要在在cms服务端工程添加如下依赖:项目使用spring data mongodb操作mongodb数据库 <dependency> <gro ...

  5. nginx反代及后端web配置

    一.反代配置,proxy_pass指向的upstream需要在反代的nginx.conf中配置 server {access_log /home/nginx/front_access.log;erro ...

  6. .net EasyTree显示所级层级(无限级、整层级颗树)的另类写法。非递归

    获取整颗树的另类写法.非递归 //获取所有的菜单 List<T_Menu> menu = bll.getMenuByUsesrID("8189a7c1-6f15-4744-b6c ...

  7. docker安装文档

    Docker离线安装以及本地yum源构建http://blog.csdn.net/joniers/article/details/64122820http://blog.csdn.net/wsscy2 ...

  8. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:解决module 'tensorflow' has no attribute 'Session'

    原因:因为是tensorflow 2.0版本

  9. SQLite-外键约束/表链接查询

    外键约束: 表一的某个字段关联到表二的某个字段 例子: 国家表:t_country

  10. Office 365 共享邮箱/日历

    一.共享邮箱 Office 365共享邮箱对于客户通过电子邮箱提出的问题,共享邮箱是一个很好的处理方式,组织中的多人可以分担监控邮箱和回复的责任,使得客户的问题更快地得到答复,而相关电子邮件都存储在一 ...