keepalived+Mysql主从配置实验

keepalived是一个类似于layer3, 4 & 7交换机制的软件,也就是我们平时说的第3层、第4层和第7层交换。

简介:

Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

工作原理:

Layer3,4&7工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:

Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。

Layer4:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。

Layer7:Layer7就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。

作用:

主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现。

高可用web架构: LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可选 可不选)

Apache+Discuz论坛+keepalived+Mysql主从高可用实验:

环境:

三台centos6.7系统;23.116配置Apache+discuz论坛系统;23.114为mysql master,keepalived1.2.19;23.113为mysql slave,keepalived1.2.19;网站、数据库主从配置此处略过。

安装keepalived  楼主使用keepalived1.2.19

#基础环境

yum -y install gcc gcc-c++ pcre-devel zlib-devel openssl-devel popt popt-devel

#内核开发包keepalived要用,一定要安装

yum –y install kernel-devel kernel

tar –zxvf keep***

cd keep***

./configure --with-kernel-dir=/usr/src/kernels/2.6.32-573.3.1.el6.x86_64/  (此处要根据自己实际环境来填写目录,可以使用uname -r来查看自己当前的内核版本,复制到此处即可;如果你发现你的kernels 下面没有。那就是没有安装 kernel-devel,也就是内核开发包)

make && make install;安装完成之后,一定要善于使用echo $?来看返回的值是否为0

安装完成之后,默认的keepalived在/usr/local/etc目录下,将目录拷贝至常用目录中:

cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

cp /usr/local/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/sbin/keepalived /usr/sbin/

mkdir /etc/keepalived

/etc/keepalived/keepalived/conf:默认这个配置文件是没有的,需要自己创建

#mysql master的keepalived配置:

! 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 mysql-ha

}

#vrrp_script chk_mysql {

#    script "/root/sql.sh"

#    interval 2

#    weight 2

#}

vrrp_instance VI_1 {

state Master   #两台配置此处均是BACKUP

interface eth0

virtual_router_id 51

priority 100   #优先级,另一台改为90

advert_int 1

#nopreempt  #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

10.10.23.137

}

}

virtual_server 10.10.23.137 3306 {

delay_loop 2   #每个2秒检查一次real_server状态

lb_algo wrr   #LVS算法

lb_kind DR    #LVS模式

persistence_timeout 60   #会话保持时间

protocol TCP

real_server 10.10.23.114 3306 {  #服务器真实IP配置段

weight 3

notify_down /root/sql.sh

TCP_CHECK {

connect_timeout 10    #连接超时时间

nb_get_retry 3       #重连次数

delay_before_retry 3   #重连间隔时间

connect_port 3306   #健康检查端口

}

#     track_script {

#    check_run

#        }

}

#mysql slave的keepalived配置文件:

! 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 mysql-ha

}

#vrrp_script chk_mysql {

#    script "/root/sql.sh"

#    interval 2

#    weight 2

#}

vrrp_instance VI_1 {

state Master   #两台配置此处均是BACKUP

interface eth0

virtual_router_id 51

priority 90   #优先级

advert_int 1

#nopreempt  #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

10.10.23.137

}

}

virtual_server 10.10.23.137 3306 {

delay_loop 2   #每个2秒检查一次real_server状态

lb_algo wrr   #LVS算法

lb_kind DR    #LVS模式

persistence_timeout 60   #会话保持时间

protocol TCP

real_server 10.10.23.113 3306 {  #服务器真实IP配置段

weight 3

notify_down /root/sql.sh

TCP_CHECK {

connect_timeout 10    #连接超时时间

nb_get_retry 3       #重连次数

delay_before_retry 3   #重连间隔时间

connect_port 3306   #健康检查端口

}

#     track_script {

#    check_run

#        }

}

notify_down:此处是引用一个脚本,如果mysql有故障时会触发此脚本:

脚本很简单,就是当mysql有故障的时候。会停止此服务器上的keepalived服务,如果这里是做的keep+nginx,将mysql换为nginx即可;

脚本定义一个变量,使用ps检查mysqld是会启动。--no-header是不打印头部信息;wc -l是列出指定文件统计总数,如果为0,表示mysqld服务没有启动;

完成之后,主从上面分别启动keepalived服务,查看一下日志,并查看一下vip现在是在哪一台服务器上:

先查看主上的IP和日志:

再查看从上的IP和日志:

从上图可看出,目前的VIP是在主服务器上的,下面我们将主上的mysql服务停止掉,再查看日志和VIP是否会自动转移到从服务器上,【需先把脚本里面的第一段if注释掉,不然会自动启动mysql服务,将看不到实验效果】

停止主上的数据库之后再查看结果如下:

当主上的数据库出现故障停止之后,会自动触发脚本,关闭主上的keepalived服务,此时从服务器会抢占keep master,过程很快,不会影响用户访问。

当主上的数据库故障处理恢复之后,再启动主上的keepalived,此时再查看结果:

如上,当主上的数据库恢复、keepalived启动之后,VIP会迅速跳转到主服务器上来,再接替从服务器的工作。这是因为主服务器的优先级要高于从服务器。

http://www.linuxidc.com/Linux/2014-08/105884.htm  keepalived选举问题 【福利】

小白刚刚学习keepalived,实验心得,欢迎各位大牛指点,交流!!!

时间: 2024-10-12 15:48:08

keepalived+Mysql主从配置实验的相关文章

mysql主从配置&&基于keepalived的主备切换

mysql互为主从设置 && 主备切换配置 需求说明: 1.公司架构一直是一台单独的mysql在线上跑,虽然一直没有出现什么宕机事件,但是出于一个高可用的考虑,提出主从备份.主备切换的需求: 2.实现这个需求的前一段时间只是在做数据库备份的时候实现了主从热备,为了实现主备切换功能,继续操作上述需求: 实验环境: master1:10.1.156.3:3306 master2:10.1.156.5:3306 my.cnf配置文件关于主从这块的修改: master1: server-id =

Lvs+keepalived+mysql主从热备

p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 10.5pt; font-family: "Calibri", "sans-serif" } h1 { margin-top: 17.0pt; margin-right: 0cm; margin-bottom: 16.5pt; margin-left

笔记13(FTP配置、tomcat配置、resin配置、MySQL主从配置)

FTP服务搭建与配置 FTP介绍 FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输. FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机. 小公司用的多,大企业不用FTP,因为不安全. 使用vsftpd搭建ftp服务 centos上自带vsftpd 安装:yum instal

mysql 主从同步实验细解

mysql  主从同步实验细解 一.实验环境 实验环境 192.168.9.108 为master 192.168.9.109 为slave 数据库版本:version              5.1.73 安装方式:采用的yum 安装 源为163的源 系统版本:centos 6.5 1.查看系统版本 [[email protected] ~]# cat /etc/issue CentOS release 6.5 (Final) Kernel \r on an \m 二.实验准备 1.安装my

Mysql主从配置,实现读写分离

大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想.这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力.Ok切入今天微博主题,利用MySQL主从配置,实现读写分离,减轻数据库压力.这种

centos MySQL主从配置 第二十八节课

centos  MySQL主从配置   第二十八节课 上半节课 下半节课 f

解读mysql主从配置及其原理分析(Master-Slave)

在windows下配置的,后面会在Linux下配置进行测试,需要配置mysql数据库同步的朋友可以参考下. 1.在主数据库服务器为从服务器添加一个拥有权限访问主库的用户:GRANT REPLICATION SLAVE ON *.* TO ' test'@'%' IDENTIFIED BY 'test'; (%表示允许所有IP,可设置指定从服务器IP)添加用户后:可在从服务器上用mysql -h127.0.0.1 -utest -ptest; 来测试是否有权限访问主数据库 2.在主据库配置文件加上

mysql主从配置思路

记录一下 原文:http://www.rjfw.com.cn/qamain/prevView.action?id=40482017200000031 mysql主从配置(清晰的思路) mysql主从配置.鄙人是在如下环境测试的: 主数据库所在的操作系统:win7 主数据库的版本:5.0 主数据库的ip地址:192.168.1.111 从数据库所在的操作系统:linux 从数据的版本:5.0 从数据库的ip地址:192.168.1.112 介绍完了环境,就聊聊配置步骤: 1.确保主数据库与从数据库

keepalived+mysql主从实现数据库冗余

 keepalived+mysql主从实现数据库冗余 一.安装mysql,并设置主备服务器 1.将下面的代码复制到一个后缀为.sh的shell脚本文件中(脚本很容易看懂) # vi /etc/scripts/mysql.sh ##/bin/bash rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum -y install mysql mysql-server mysql-de