两台阿里云服务器,如何配置keepalived,mysql双主

两台阿里云服务器,如何配置keepalived,mysql双主,第1张

使用MySQL双master+keepalived是一种非常好的解决方案,在MySQL-HA环境中,MySQL互为主从关系,这样就保证了两台MySQL数据的一致性,然后用keepalived实现虚拟IP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换。
下面,我把即将上线的一个生产环境中的架构与大家分享一下,看一下这个架构中,MySQL-HA是如何实现的,环境拓扑如下
MySQL-VIP:10101021
MySQL-master1:10101017
MySQL-master2:10101018
OS版本:Redhat62
MySQL版本:mysql-5159
Keepalived版本:keepalived-1120
一、MySQL master-master配置
1、修改MySQL配置文件
两台MySQL均如要开启binlog日志功能,开启方法:在MySQL配置文件[MySQLd]段中加上log-bin=MySQL-bin选项
两台MySQL的server-ID不能一样,默认情况下两台MySQL的serverID都是1,需将其中一台修改为2即可
Master1配置:
#vim /etc/mycnf
log-bin=mysql-bin //开启binlog日志功能
log =/usr/local/mysql/var/mysqllog //会打印mysql的所以sql语句
server-id= 1 //
binlog-do-db =mysql //需要同步的库名称
auto-increment-increment= 2
auto-increment-offset= 2
Master2配置:
#vim /etc/mycnf
log-bin=mysql-bin //开启binlog日志功能
log =/usr/local/mysql/var/mysqllog //会打印mysql的所以sql语句
server-id= 2
binlog-do-db =mysql //需要同步的库名称
auto-increment-increment= 2
auto-increment-offset= 2
2、建授权用户
在10101017上新建授权用户
grant replicationslave on to test@’101010%’ identified by ‘123456’;
在10101018服务器上建授权用户
grant replicationslave on to test@’101010%’ identified by ‘123456’;
3、将10101017设为10101018的主服务器
在10101018上将10101017设为自己的主服务器
mysql> show master status;(17服务器配置)
1+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin000027| 106|mysql | |
+------------------+----------+--------------+------------------+
1 row in set (001 sec)
MySQL> change master to master_host='10101017',master_user=’test’,master_password='123456',master_log_file='MySQL-bin000027',master_log_pos=106;
Query OK, 0 rows affected (005 sec)
MySQL> start slave;
Query OK, 0 rows affected (000 sec)
mysql> show slave status \G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes \\如果此2项都为yes,master-master配置即成功
将10101018设为10101017的主服务器 方法与上面设置一致只需将
在10101017上将10101018设为自己的主服务器
mysql> show master status;(18服务器配置)
1+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin000027| 106|mysql | |
+------------------+----------+--------------+------------------+
1 row in set (001 sec)
MySQL> change master to master_host='10101018',master_user=’test’,master_password='123456',master_log_file='MySQL-bin000027',master_log_pos=106;
Query OK, 0 rows affected (005 sec)
MySQL> start slave;
Query OK, 0 rows affected (000 sec)
mysql> show slave status \G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes \\如果此2项都为yes,master-master配置即成功
测试是否成功:
如上述均正确配置,现在在任何一台MySQL上更新数据都会同步到另一台MySQL(仅限mysql库)
二、keepalived安装及配置
1、10101017服务器上keepalived安装及配置
安装keepalived
#tar zxvfkeepalived-1120targz
#cdkeepalived-1120
#/configure--prefix=/usr/local/keepalived--with-kernel-dir=/usr/src/kernels/2632-220el6x86_64
#make &&make install
配置keepalived
我们自己在新建一个配置文件,默认情况下keepalived启动时会去/etc/keepalived目录下找配置文件
#mkdir/etc/keepalived
#vi/etc/keepalived/keepalivedconf
global_defs {
notification_email {
}
smtp_server 127001 (如果本机配置的话)
smtp_connect_timeout 30
router_id MySQL-ha
}
vrrp_instance VI_1{
state BACKUP #两台配置此处均是BACKUP
interface p4p1 #注意网卡接口
virtual_router_id 51
priority 100 #优先级,另一台改为90
advert_int 1
nopreempt #不主动抢占资源,只在优先级高的机器上设置即可,优先级低的机器不设置
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10101021
}
}
virtual_server10101021 3306 {
delay_loop 2 #每个2秒检查一次real_server状态
lb_algo wrr #LVS算法
lb_kind DR #LVS模式
persistence_timeout 60 #会话保持时间
protocol TCP
real_server 10101017 3306 {
weight 3
notify_down /usr/local/my/mysh #检测到服务down后执行的脚本
TCP_CHECK {
connect_timeout 10 #连接超时时间
nb_get_retry 3 #重连次数
delay_before_retry 3 #重连间隔时间
connect_port 3306 #健康检查端口
}
}
编写检测服务down后所要执行的脚本
#vi/usr/local/MySQL/bin/MySQLsh
#!/bin/sh
pkillkeepalived
#chmod +x/usr/local/MySQL/bin/MySQLsh
注:此脚本是上面配置文件notify_down选项所用到的,keepalived使用notify_down选项来检查real_server的服务状态,当发现real_server服务故障时,便触发此脚本;我们可以看到,脚本就一个命令,通过pkill keepalived强制杀死keepalived进程,从而实现了MySQL故障自动转移。另外,我们不用担心两个MySQL会同时提供数据更新 *** 作,因为每台MySQL上的keepalived的配置里面只有本机MySQL的IP+VIP,而不是两台MySQL的IP+VIP
启动keepalived
#/usr/local/keepalived/sbin/keepalived–D
#ps -aux | grepkeepalived
测试
找一台局域网PC,然后去ping MySQL的VIP,这时候MySQL的VIP是可以ping的通的
停止MySQL服务,看keepalived健康检查程序是否会触发我们编写的脚本
1、10101018服务器上keepalived安装及配置
安装keepalived
#tar zxvfkeepalived-1120targz
#cdkeepalived-1120
#/configure--prefix=/usr/local/keepalived--with-kernel-dir=/usr/src/kernels/2632-220el6x86_64
#make &&make install
配置keepalived
我们自己在新建一个配置文件,默认情况下keepalived启动时会去/etc/keepalived目录下找配置文件
#mkdir/etc/keepalived
#vi/etc/keepalived/keepalivedconf
global_defs {
notification_email {
}
smtp_server 127001
smtp_connect_timeout 30
router_id MySQL-ha
}
vrrp_instance VI_1{
state BACKUP #两台配置此处均是BACKUP
interface p4p1 #注意网卡接口
virtual_router_id 51
priority 90 #优先级,另一台改为90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10101021
}
}
virtual_server10101021 3306 {
delay_loop 2 #每个2秒检查一次real_server状态
lb_algo wrr #LVS算法
lb_kind DR #LVS模式
persistence_timeout 60 #会话保持时间
protocol TCP
real_server 10101018 3306 {
weight 3
notify_down /usr/local/my/mysh #检测到服务down后执行的脚本
TCP_CHECK {
connect_timeout 10 #连接超时时间
nb_get_retry 3 #重连次数
delay_before_retry 3 #重连间隔时间
connect_port 3306 #健康检查端口
}
}
启动keepalived
#/usr/local/keepalived/sbin/keepalived–D
#ps -aux | grepkeepalived
测试
停止MySQL服务,看keepalived健康检查程序是否会触发我们编写的脚本
三、测试
两台MySQL服务器都要授权允许从远程登录
MySQL> grantall privileges on to andyguo@'%' identified by '123456';
Query OK, 0 rowsaffected (000 sec)
MySQL> flushprivileges;
Query OK, 0 rowsaffected (000 sec)
keepalived故障转移测试:
在windows客户端一直去ping VIP,然后关闭10101017上的keepalived,正常情况下VIP就会切换到10101018上面去
开启10101017上的keepalived,关闭10101018上的keepalived,看是否能自动切换,正常情况下VIP又会属于10101017
注:keepalived切换速度还是非常块的,整个切换过程只需1-3秒
MySQL故障转移测试:
在10101017上关闭MySQL服务,看VIP是否会切换到10101018上
开启10101017上的MySQL和keepalived,然后关闭10101018上的MySQL,看VIP是否会切换到10101017上
如果都没问题,到此整个配置即已完成。
备注(在测试的过程中遇到了一些问题,解决方法)
Keepalived_healthcheckers:IPVS: Can't initialize ipvs: Protocol not available
起初重装了ipvsadm和keepalived,但故障依旧,随后突然想到是否lvs模块加载异常,于是lsmod|grep ip_vs发现果然没有相应的模块,而正常情况下应该是有的
e、手动加载ip_vs模块
modprobe ip_vs
modprobe ip_vs_wrr
f、重启keepalived服务,故障排除,此时转发正常,从服务器的ip_vs加载正常,主从切换也正常
g、将modprobeip_vs、modprobe ip_vs_wrr添加进/etc/rclocal开机自动加载

RDS是阿里云提供的即开即用的关系型数据库服务,兼容了MySQL和SQLServer两种数据库引擎。在传统数据库的基础上,阿里云RDS提供了强大丰富的功能从而保证了高可用性、高安全性以及高性能。此外,RDS还提供了诸多便利功能提升了RDS的易用性。

高可用:

采用主从热备的架构。主机down机或者出现故障后,备机秒级完成无缝切换,服务可用性承诺:9995%

提供自动多重备份的机制。用户可以自行选择备份周期,也可以根据自身业务特点随时进行临时备份,数据可靠性承诺:999999%

数据回溯到任意时间点。用户可以选择7天内的任意时间点创建一个临时实例,临时实例生成后验证数据无误,即可将数据迁移到RDS实例,从而完成数据回溯 *** 作。

高安全

提供白名单访问策略。可自行设置允许访问的IP及IP段,有效防止黑客扫描端口进行服务器攻击。

提供阈值报警的功能。支持实例锁定报警、连接数报警、IOPS报警、磁盘空间使用报警、CPU报警等。

提供SQL注入告警。将对发往RDS的疑似SQL注入的语句进行记录并展示,供用户进行程序调整,杜绝SQL注入的发生。

SQL审计。记录所有发往RDS的SQL语句,系统将记录SQL语句相关的连接IP、访问数据库的名称、执行语句的账号、执行时间、返回记录数等信息。供用户对RDS安全性进行排查。

控制台 *** 作日志。记录所有在控制台上进行的修改类 *** 作,便于管理员查看并管理RDS。

 Linux下如何进行FTP设置
ECS Linux服务器如何配置网站以及绑定域名
Ubuntu安装vncserver实现图形化访问
阿里云Docker镜像库
ECS linux中添加ftp用户,并设置相应的权限
CentOS65安装vncserver实现图形化访问
Linux SCP命令复制传输文件的用法
Mysql,phpmyadmin密码忘了怎么办
Linux下l2tp客户端xl2tpd的安装配置
使用SFTP方式传输文件
ECS Linux系统盘网站数据更换至数据盘
WDCP的报错处理
Linux中PHP如何安装curl扩展方法
修改Linux服务器的ssh端口
ECS Linux配置vnc文档
运维分享--阿里云linux系统mysql密码修改脚本
20步打造最安全的Nginx Web服务器
SSH配置存在问题,导致登录和传输数据很慢
ECS Linux下如何查看定位当前正在运行的Nginx的配置文件
ECS 服务器CentOS系统如何开放端口
查看Linux下默认的DNS
FTP主动被动模式配置混乱导致无法登录
linux环境配置phpmyadmin
ECS Linux系统下VSFTP配置的FTP上传文件报错“553 Could not create file”
ECS Linux Mysql启动提示Too many arguments (first extra is 'start')
运维分享--阿里云linux系统ssh远程连接检查脚本
ECS Linux系统授权mysql外网访问
ECS Linux服务器nginx禁止空主机头配置
ECS Linux服务器通过FTP无法查看到htaccess文件
ECS Linux服务器下Mysql自动备份脚本的使用方法
ECS-linux授权mysql外网访问
用date命令修改Linux系统的时间为什么无效
运维分享--阿里云linux系统web日志分析脚本
ECS Linux服务器messagebus默认关闭导致安装桌面环境后无法正常使用
ECS Nginx+php中php-fpm参数配置
运维分享--阿里云linux系统mysql连接检查脚本
iptables的conntrack表满了导致访问网站很慢
运维分享--阿里云linux系统带宽监测脚本
如何调整目录文件的拥有者和拥有组
yum *** 作报错处理
ECS Linux配置vsftpd限制FTP账户访问其它目录
vsftp报错:500 OOPS: vsftpd: cannot locate user specified in 'ftp_username':ftp
Linux主机系统目录误 *** 作权限修改为777修复方法
ECS Nginx中>以下是两种获取方式的简介:
1、阿里云控制台:登录阿里云物联网平台控制台,在左侧导航栏中选择“日志服务”,即可查看所有日志相关的内容。您可以选择不同的查询方式(如按时间范围、关键字等),然后导出日志数据,并在小程序中展示。
2、API/SDK:使用阿里云物联网平台提供的API/SDK,可以直接调用相应的接口获取日志数据。您需要先进行身份验证(如AccessKeyID和AccessKeySecret),然后按照接口文档中的说明,设置相应的参数和请求格式,就可以成功获取日志数据了。最后将获取到的数据解析并在小程序中展示即可。

选择云服务器的配置的话就要主要参考这几个因素:CPU,内存,硬盘,带宽,线路, *** 作系统和地区。下面分别说一下:
CPU就代表了云服务器的运算能力,如果网站流量较大,如果网站流量较大,动态页面比较多,建议选择2核以上CPU,而且目前的云计算厂商提供云服务器的配置还可以随时增加,也就是当你觉得业务量增长了,需要更强的运算能力了,那么就可以直接在官网上进行资源扩充。
内存是数据的中转站,也是决定网站打开速度的重要因素,内存越大,可用缓存越大,打开速度也就越快。根据你网站的规模选择合适配置的空间,假如是一般的个人博客,或者企业展示网站类,就可以选小一点的,若是商城类,新闻类就要相对大一点的空间,针对于各种应用场景,需要采取不同规格的配置,总之,最适合的才是最好的。
硬盘是存储数据的地方,硬盘的大小要根据网站的数据大小决定,在选择时应该考虑到剩余空间。另外硬盘的I/O读取速度直接决定文件读取的快慢,云服务器硬盘的读取速度比其他网站快很多,一般情况下都够用。
根据网站的性质选择合适的带宽,看你的网站类型、结构和访问量等指标或者预计,一般新的网站,不多,也做了处理的,有2M足够了。带宽只要真实,不用多,够用,合适就好;或者,先选择2M,不够再加,这样比较稳妥。如果是普通的网站。比如文字网站,网站,论坛等,占用的带宽非常小。5000的访问量可能也占用不到2M的带宽。如果是视频,下载等为主的网站。可能几百个人同时在线都需要占用10M以上的带宽。
*** 作系统的选择和个人的熟悉情况和网站具体情况有关,对哪种 *** 作系统比较了解就选择哪种 *** 作系统,另外windows系统对asp程序支持较好,不过占用内存较多,而Linux系统对PHP程序比较友好,更省内存,并且有的程序可能只支持某个 *** 作系统。现在比较主流的云服务器,像阿里云的ECS就提供的各个版本的 *** 作系统的镜像,还能非常便捷地获取由云市场提供的各种应用软件的镜像和工具等,甚至可以实现免安装和一键部署。
线路的选择对于我们来说有的时候十分纠结。如果我们是针对于本地用户,那么我们本来可以选择单线路的服务器,但是双线服务器的优势一般在于双IP,并且对于一个城市来说,宽带有电信、网通不同的。
地区,即云服务器所在地区,最好选择在你目标用户所在的区域内,这样网站等打开速度更快。最好选择的云服务提供商有能力在多地部署数据中心,这样可以提供更好的容灾性还能帮助降低访问网站的网络时延。
最后总结:云服务器的配置选择,和网站或应用的类型、访问量、数据量大小、程序质量等因素有关,建议和网站或应用的开发技术人员沟通,选择最适合自己业务场景的配置。 如果没有技术人员可提供建议,不妨参考云服务器厂商提供的配置方案,像1核1GB 1M的入门型适用于个人网站初始阶段;1核 2GB 1M的基础型适合流量适中的网站应用,或简单开发环境、代码存储库等。另外,像阿里云还有专门针对网站、电商、游戏、移动app等不同行业的解决方案供参考。
相信在未来,更多的网站会选择上云,云服务器的作用和价值也会更大地显现出来。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12744898.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存