构建高可用服务器之三 Keepalive均衡Mysql

实验目的:

通过Keepalive来构建Mysql的高可用。Mysql已做主从,当一台Mysql宕机的时候不影响对Mysql的调用。

实验环境:

两台Mysql服务器(基于LAMP且已做主从),两台Mysql服务器都通过Apache发布Discuz论坛(discuz调用的是主mysql地址)。

身份            主机名      IP地址

主Mysql           master      192.168.1.3

从Myslq           slave        192.168.1.4

LAMP平台请参见<<搭建Discuz论坛的两种方式>>

Mysql主从参见<<构建Mysql三部曲之三 主从案例>>

实验步骤:

一、在主mysql上安装配置keepalive

[[email protected] ~]# bash keepalive_install.sh

“脚本”内容如下:

[[email protected] ~]# cat keepalive_install.sh
#!/bin/bash
yum -y  install kernel-devel openssl-devel  popt-devel &&
wgethttp://www.keepalived.org/software/keepalived-1.1.15.tar.gz &&
tar -zxf keepalived-1.1.15.tar.gz &&
cd keepalived-1.1.15 &&
./configure--with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/ &&
make && make install &&
DIR=/usr/local/
cp $DIR/etc/rc.d/init.d/keepalived  /etc/rc.d/init.d/  &&
cp $DIR/etc/sysconfig/keepalived /etc/sysconfig/&& mkdir -p /etc/keepalived &&
cp $DIR/sbin/keepalived/usr/sbin/&&
cp/usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ &&
/etc/init.d/keepalived restart
if [ $? -eq 0 ];then
        echo -e ‘\e[32mInstall Keepalive Successfully!\e[0m‘
else
        echo -e ‘\e[31mInstall Keepalive Failure!\e[0m‘
fi

加载ip_vs的内核模块

[[email protected] ~]# modprobe ip_vs
[[email protected]~]# modprobe ip_vs_wrr
[[email protected]~]# modprobe ip_vs_rr

修改keepalived.conf配置文件如下:

[[email protected] ~]# vim /etc/keepalived/keepalived.conf
[[email protected] ~]# cat/etc/keepalived/keepalived.conf
! Configuration File for keepalived
 
global_defs {
  notification_email {
         [email protected]
   }
  notification_email_from [email protected]
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id LVS_DEVEL
}
 
vrrp_instance VI_1 {
   state MASTER
   interface eth0
   virtual_router_id 51
   priority 100
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
    }
   virtual_ipaddress {
         192.168.1.77
    }
}
 
virtual_server 192.168.1.77 3306 {
   delay_loop 6
   lb_algo wrr
   lb_kind DR
   persistence_timeout 50
   protocol TCP
 
   real_server 192.168.1.3 3306 {
       weight 1
         notify_down/data/sh/ keepalive_stop.sh
       TCP_CHECK {
           connect_timeout 3
           nb_get_retry 3
           delay_before_retry 3
             connect_port 3306
       }
    }
}
[[email protected] ~]# mkdir -p /data/sh
[[email protected] ~]# vim/data/sh/keepalive_stop.sh
[[email protected] ~]# chmod +x /data/sh/keepalive_stop.sh
[[email protected] ~]# /etc/init.d/keepalivedreload
Reloading keepalived:                                      [  OK  ]
[[email protected] ~]# cat/data/sh/keepalive_stop.sh
#!/bin/bash
/etc/init.d/keepalived stop
[[email protected] ~]#

二、在从mysql上安装配置keepalive

[[email protected] ~]# bash keepalive_install.sh

“脚本”内容如下,同master上执行的脚本一致(非严格意义上的脚本,安装命令放一起而已)。

[[email protected] ~]# cat keepalive_install.sh
#!/bin/bash
yum -y install  kernel-developenssl-devel  popt-devel &&
wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz&&
tar -zxf keepalived-1.1.15.tar.gz &&
cd keepalived-1.1.15 &&
./configure--with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/ &&
make && make install &&
DIR=/usr/local/
cp $DIR/etc/rc.d/init.d/keepalived  /etc/rc.d/init.d/  &&
cp $DIR/etc/sysconfig/keepalived/etc/sysconfig/ && mkdir -p /etc/keepalived &&
cp $DIR/sbin/keepalived/usr/sbin/&&
cp/usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ &&
/etc/init.d/keepalived restart
if [ $? -eq 0 ];then
        echo -e ‘\e[32mInstall Keepalive Successfully!\e[0m‘
else
        echo -e ‘\e[31mInstall Keepalive Failure!\e[0m‘
fi
[[email protected] ~]#

加载ip_vs的内核模块

[[email protected] ~]# modprobe ip_vs
[[email protected] ~]# modprobe ip_vs_wrr
[[email protected] ~]# modprobe ip_vs_rr

修改keepalived.conf配置文件如下

[[email protected] ~]# vim/etc/keepalived/keepalived.conf
[[email protected] ~]# cat/etc/keepalived/keepalived.conf
! Configuration File for keepalived
 
global_defs {
  notification_email {
         [email protected]
   }
  notification_email_from [email protected]
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id LVS_DEVEL
}
 
vrrp_instance VI_1 {
   state BACKUP    !此处同master不一样
   interface eth0
   virtual_router_id 51
   priority 90     !优先级比master上低
   advert_int 1
    authentication{
       auth_type PASS
       auth_pass 1111
    }
   virtual_ipaddress {
         192.168.1.77
    }
}
 
virtual_server 192.168.1.77 3306 {
   delay_loop 6
   lb_algo wrr
   lb_kind DR
   nat_mask 255.255.255.0
   persistence_timeout 50
    protocol TCP
 
   real_server 192.168.1.4 3306 { !Slave上的IP
       weight 1
         notify_down/data/sh/keepalive_stop.sh
       TCP_CHECK {
           connect_timeout 3
           nb_get_retry 3
           delay_before_retry 3
             connect_port 3306
       }
    }
}
[[email protected] ~]#
[email protected] ~]# mkdir -p /data/sh
[[email protected] ~]# vim/data/sh/keepalive_stop.sh
[[email protected] ~]# chmod +x/data/sh/keepalive_stop.sh
[[email protected] ~]# /etc/init.d/keepalivedreload
Reloading keepalived:                                      [  OK  ]
[[email protected] ~]# cat/data/sh/keepalive_stop.sh
#!/bin/bash
/etc/init.d/keepalived stop
[[email protected] ~]#

三、修改Discuz论坛数据库连接IP为VIP

直接访问master上的192.168.1.3论坛是可以访问的,且直接访问slave上的192.168.1.4论坛也是可以访问的,现在我们直接访问VIP(虚拟IP) 192.168.1.77依旧可以访问论坛。

这个时候因为discuz调用的是master上的数据库IP,所以我们应该让其调用VIP     192.168.1.77,这样才能保证在主挂的时候自动切换到从上。

在master

[[email protected] ~]#sed -i ‘s/192.168.1.3/192.168.1.77/‘/usr/local/apache/htdocs/config/config_global.php
[[email protected] ~]#/usr/local/apache/bin/apachectl restart

在slave

[[email protected] ~]#sed -i ‘s/192.168.1.3/192.168.1.77/‘/usr/local/apache/htdocs/config/config_global.php
[[email protected] ~]#/usr/local/apache/bin/apachectl restart


四、测试

上边两个图很明显可以看出此时VIP在master上。

手动模拟master上的mysql关闭

VIP自动漂到slave上

论坛依旧可以访问

时间: 2024-10-14 14:53:01

构建高可用服务器之三 Keepalive均衡Mysql的相关文章

构建高可用服务器之四 Keepalive冗余Nginx

实验目的: 使用Keepalive来保证Nginx的高可用,进而实现网站的高可用! 实验拓扑: 实验环境: 如上拓扑图所示,master与slave是mysql主从,且有discuz论坛,且已经做高可用.(可参加<构建高可用服务器之三Keepalive冗余Mysql>).现在是刚搭建两台Nginx,均已安装keepalive,IP地址分别为192.168.1.2和192.168.1.5(可参加<构建Nginx服务器之一安装及虚拟主机配置>和<构建高可用服务器之一Keepali

构建高可用服务器之一 Keepalive介绍及安装

Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障.一个mysql或lvs或nginx服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性. 以下简图为例,当服务调用mysql的时候,直接调用vip,这样即使ma

构建高可用的LVS负载均衡集群 入门篇

一.LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org.现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能. LVS 集群采用IP负载和基于内容请求分

构建高可用的LVS负载均衡集群 进阶篇

一.lvs组件介绍 lvs的组件由两部分组成:工作在内核空间的ipvs模块和工作在用户空间ipvsadm工具.其中ipvsadm是规则生成工具,而ipvs是一个使规则生效的工具. 二.ipvsadm详解 构建高可用的LVS负载均衡集群 进阶篇,布布扣,bubuko.com

drbd+mariadb+corosync+pacemaker构建高可用,实现负载均衡

DRBD DRBD是由内核模块和相关脚本而构成,用以构建高可用性的集群 drbd 工作原理:DRBD是一种块设备,可以被用于高可用(HA)之中.它类似于一个网络RAID-1功能. 当你将数据写入本地 文件系统时,数据还将会被发送到网络中另一台主机上.以相同的形式记录在一个 文件系统中. 本地(主节点)与远程主机(备节点)的数据可以保证实时同步.当本地系统出现故障时,远 程主机上还会保留有一份相同的数据,可以继续使用.在高可用(HA)中使用DRBD功能,可以代替使用一 个共享盘阵.因为数据同时存在

《构建高可用Linux服务器》第3版与第2版的区别

<构建高可用Linux服务器第3版>即将面市发行,有很多朋友在微博和QQ群上咨询与其第二版的区别,我这里也稍为说明下,<构建高可用Linux服务器>这次发行的是第3版,相对于第1版和第2版而言改动比较大,服务器系统主要以CentOS5.8 x86_64为主,删减了不少章节,部分有争议的内容也全部摈弃了.当然了,在写作过程中吸收了读者对上一版本的许多意见和建议,继续修正第2版的排版错误和人为错误及其它问题. 具体改动如下: 删除了原第二版第2章Linux服务器虚拟化章节,部分内容并进

Keepalived高可用服务器以及haproxy的负载均衡

Keepalived高可用服务器以及haproxy的负载均衡 Keepalive运行原理 Keepalived检测每个服务节点状态 当服务器节点异常或工作出现故障,keepalived将故障节点从集群从集群系统中踢除 故障节点恢复后,自动将其加入 使用keepalived软件配置HA集群 使用keepalived软件配置HA集群 1.提供服务的主机需要装keepalived和web服务 yum -y install httpd keepalived 2.修改提供服务的主机的keepalived的

drbd+corosync+pacemaker构建高可用MySQL集群

一.drbd简介 drbd全称Distributed Replicated Block Device,为分布式复制块设备,基于软件实现的,不共享任何东西的,通过复制的方式构建镜像模式工作的磁盘,类似于raid1,但不同于raid的是,drbd实现了跨主机镜像块数据.drbd工作原理:由工作于内核层次的drbd,将要写入本地磁盘的数据镜像一份发往本地网卡,由本地网卡发往另一台drbd主机的本地磁盘存储.因此,drbd的两个主机的,磁盘存储一模一样,从而实现分布式复制块设备的实现.drbd进程对磁盘

keepalived + haproxy + mysql 构建高可用数据库

keepalived + haproxy + mysql 构建高可用1.keepalived 的高可用是主备,有一台作为备用2.keepalived + haproxy 搭建的高可用是可以两台都会调度的高可用 拓扑图:keepalived:负责抢占虚拟ip,使用vrrp协议haproxy:负责做访问调度,减轻单点压力,单独监听一个端口,这里用23306 1.安装mysql分别在两台机器上面搭建mysql,并做主从配置,这里不做介绍2.搭建haproxy1.download 源码包,下载地址:ht