两台阿里云服务器,如何配置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开机自动加载

选择云服务器的配置的话就要主要参考这几个因素:CPU,内存,硬盘,带宽,线路,操作系统和地区。下面分别说一下:

CPU就代表了云服务器的运算能力,如果网站流量较大,如果网站流量较大,动态页面比较多,建议选择2核以上CPU,而且目前的云计算厂商提供云服务器的配置还可以随时增加,也就是当你觉得业务量增长了,需要更强的运算能力了,那么就可以直接在官网上进行资源扩充。

内存是数据的中转站,也是决定网站打开速度的重要因素,内存越大,可用缓存越大,打开速度也就越快。根据你网站的规模选择合适配置的空间,假如是一般的个人博客,或者企业展示网站类,就可以选小一点的,若是商城类,新闻类就要相对大一点的空间,针对于各种应用场景,需要采取不同规格的配置,总之,最适合的才是最好的。

硬盘是存储数据的地方,硬盘的大小要根据网站的数据大小决定,在选择时应该考虑到剩余空间。另外硬盘的I/O读取速度直接决定文件读取的快慢,云服务器硬盘的读取速度比其他网站快很多,一般情况下都够用。

根据网站的性质选择合适的带宽,看你的网站类型、结构和访问量等指标或者预计,一般新的网站,不多,也做了处理的,有2M足够了。带宽只要真实,不用多,够用,合适就好;或者,先选择2M,不够再加,这样比较稳妥。如果是普通的网站。比如文字网站,网站,论坛等,占用的带宽非常小。5000的访问量可能也占用不到2M的带宽。如果是视频,下载等为主的网站。可能几百个人同时在线都需要占用10M以上的带宽。

操作系统的选择和个人的熟悉情况和网站具体情况有关,对哪种操作系统比较了解就选择哪种操作系统,另外windows系统对asp程序支持较好,不过占用内存较多,而Linux系统对PHP程序比较友好,更省内存,并且有的程序可能只支持某个操作系统。现在比较主流的云服务器,像阿里云的ECS就提供的各个版本的操作系统的镜像,还能非常便捷地获取由云市场提供的各种应用软件的镜像和工具等,甚至可以实现免安装和一键部署。

线路的选择对于我们来说有的时候十分纠结。如果我们是针对于本地用户,那么我们本来可以选择单线路的服务器,但是双线服务器的优势一般在于双IP,并且对于一个城市来说,宽带有电信、网通不同的。

地区,即云服务器所在地区,最好选择在你目标用户所在的区域内,这样网站等打开速度更快。最好选择的云服务提供商有能力在多地部署数据中心,这样可以提供更好的容灾性还能帮助降低访问网站的网络时延。

最后总结:云服务器的配置选择,和网站或应用的类型、访问量、数据量大小、程序质量等因素有关,建议和网站或应用的开发技术人员沟通,选择最适合自己业务场景的配置。 如果没有技术人员可提供建议,不妨参考云服务器厂商提供的配置方案,像1核1GB 1M的入门型适用于个人网站初始阶段;1核 2GB 1M的基础型适合流量适中的网站应用,或简单开发环境、代码存储库等。另外,像阿里云还有专门针对网站、电商、游戏、移动app等不同行业的解决方案供参考。

相信在未来,更多的网站会选择上云,云服务器的作用和价值也会更大地显现出来。

云服务器配置可视化php环境界面,要借助第三方一键php包的配置。国人开发了这方面的面板,可以使用。不管使用的是win服务器还是linux 服务器,都可以在三方面板的帮助下,成功配置出可视化操作界面,然后一键部署 worpdress环境。

接下去就是这些步骤了:

1、注册域名

2、选购服务器

3、网站备案

4、搭建网站环境

5、安装网站程序

6、充实网站内容

所有的网站都这么操作出来的,这是个思路,因为这方面内容较多,这里也写不开那么多内容,在这留言或到咱们的 blog找相关内容,老魏写过不止一篇教程,都挺详细的内容,可以帮助你入门。

阿里云ECS云服务器选择页面比较繁琐,第一次购买的同学一般都会一头雾水,笔者今天有时间,来说说关于ECS实例计费模式、公网宽带、地域选择、镜像、云盘等选择方法,总结了一下大约是10个步骤:

1 ECS付费模式选择

阿里云ECS云服务器有三种付费模式:[包年包月、按量付费和抢占式实例](网页链接),来详细说下这三种模式及选择方法:

ECS付费模式选择

包年包月:包年包月模式比较常见,尤其是长时间使用ECS的场景,如Web网站应用,选择包年包月是节省成本也最合适的付费模式,包年包月是先付费后使用的计费方式,买一台ECS实例,按年或者按月多少钱,用户就先支付多少钱;

按量付费:按量付费模式是先使用后付费,阿里云系统以小时整点结算。按量付费模式适用于短时间或者业务高峰期间的应用场景,比如偶尔需要做测试,就会临时开一台按量付费的ECS,一个小时几分或者几毛钱,用完释放即可;

抢占式实例:抢占式相对于按量付费更优惠,抢占式实例有点类似市场经济,市场价格会随供需变化而浮动。必须提醒用户抢占式实例会被自动释放,所以有状态应用不宜使用抢占式实例,小心你的数据被释放。

哪个快网以Web网站应用为例,选择包年包月模式。

2 地域及可用区

ECS地域和可用区

地域是指云服务器的物理数据中心所在位置。理论上,用户距离ECS地域距离越近,网络延迟越小,速度就越快,所以ECS地域的选择建议就近原则。当然,这是抛开备案不谈,如果受备案约束,不想备案的用户,那么中国大陆地域就不要选择了,可以选择中国香港地域。

可用区是指同一地域下,电力和网络独立的区域,可用区的存在是为了提升ECS的容灾能力。当选择多台ECS实例时,如果你的应用需要较高的容灾能力,那就需要布局在同地域不同可用区下,如果没有要求,随机分配即可。

不想备案,就选择了中国香港节点。

3 ECS实例规格

阿里云ECS云服务器有多种规格,以2核4G的云服务器为例,这个配置下有多个规格可选,如计算型c6、突发性能t5、共享计算型n4、计算网络增强型sn1ne实例等,这么多规格如何选择?

计算型c6实例是新一代企业级实例,性能好价格也贵一些;

突发性能t5实例是入门级规格,CPU性能受限于基准性能;

共享计算型n4:是入门级规格,但是不限制处理器性能,拥有100%CPU性能;

计算网络增强型sn1ne实例:性能也不错,相对于计算型c6属于上一代实例。

关于ECS实例规格详细介绍参考官方文档:

优惠上云,来阿里云·云小站wwwaliyuncom

,文档写的很详细了,就不多赘述了。

笔者选择了共享计算型n4实例,因为笔者购买的云服务器就是个人使用的,n4实例不限制CPU性能,价格相对低一些。大家根据实际情况选择。

4 镜像

镜像可以分为两类,即Windows类和Linux类,镜像是可以免费更换的,但是需要注意的是,只有中国大陆地域的云服务器可以Linux和Windows系统互相更换。哪个快网选的中国香港地域,所以我就得谨慎的选择操作系统,假设我选择了Windows类的系统,后续我想要使用Linux类的系统就不能更换了。中国大陆地域如华北、华东、华南等对于不用担心,镜像随便换。

5 存储

存储是指ECS云服务器的块存储,系统盘可选高效云盘、SSD云盘和ESSD云盘(由于云吞铺子之前选的是共享计算型n4实例,这个实例不支持ESSD云盘)。云盘性能方面ESSD云盘>SSD云盘>高效云盘,ESSD云盘价格要贵一些,高效云盘相对更便宜,关于云盘性能参考官方文档:[云盘参数和性能对比 - 阿里云](网页链接),文档详细不多赘述。

云盘性能涉及IPOS或者吞吐量等参数,笔者对云盘性能没有要求,出于价格考虑,选择了高效云盘。

选择下一步,进入网络和安全组配置。

6 网络

以前阿里云网络类型分为经典网络和专有网络,专有网络更安全,以前的经典网络已经很少见了。对专有网络没有要求的话,默认即可,有要求就移步到专有网络控制台自定义创建VPC。

小编对专有网络没什么要求,就是一个单机的ECS实例,选择了默认。

7 公网 IP

ECS公网宽带

勾选“分配公网IPv4地址”云服务器才有公网IP,不勾选创建后的ECS实例是不可以对外访问的,不勾选的话,后期可以通过绑定弹性公网IP(EIP)来获取公网IP。

带宽计费模式可选按固定宽带和按使用流量。按固定宽带就是用户选择多少M,阿里云就分配给用户多少M的公网宽带,使用期间宽带天天跑满还是没有流量都随便,很好理解;按使用流量计费类似我们手机的上网流量,使用多少G支付多少G的钱,为了防止恶意流量攻击,可以设置宽带峰值。

哪个快网选择了固定宽带计费模式,选择了1M宽带,1M宽带的下载速度是128KB/S。

8 安全组

安全组是一种虚拟防火墙,安全组用于设置网络访问控制。比如平时开放或禁用端口,都可以通过安全组配置。默认即可,因为ECS实例创建后可以修改。

安全组默认开放了22号端口和3389号端口,为了方便用户远程连接。

9 弹性网卡

弹性网卡一般用于高可用集群搭建,有要求就自定义选择,无要求就默认,后期也可以更换的。

10 IPv6

有的ECS实例规格支持IPv6,有的不支持。分配的IPv6地址默认为私网地址,想要使用IPv6公网宽带需要另外购买。对IPv6没有要求就默认即可。

然后提交订单即可。

以上是小编测试的自定义选择ECS云服务器的详细过程,等有时候再写一篇关于控制台的使用,阿里云可能是产品太多吧,有点乱了。

ECS阿里云服务器支持PHPJAVA,那么我的问题是,ECS为什么可以支持这两种语言的开发?还有Tomcat\Apache只支持一种

用阿里页面上的一句话:弹性计算服务(简称ECS)是一种简单高效的计算服务,具有可扩展的处理能力。

ECS你可以把它想成是你在商场租了一台电脑(你租的原因,想想就明白了)。它不属于你。交了房租就可以随便用,系统也可以随便装。

然后你是想在这个系统上运行PHP还是Java,甚至是玩游戏,都由你决定。

另一方面,Tomcat/Apache是运行在ECS中的服务和软件,它们没有可比性。

阿里云服务器运维需要会什么?

需要会以下内容:

1、熟悉linux基本操作命令、网络基本配置、网络路由及防火墙服务配置。

2、熟悉shell脚本语言,熟悉C、Java、Python其中一种或多种。

3、Linux系统服务网络基础(重点难点TCP/UDP)、sshd服务(scp/rsync)、文件共享服务(ftp/nfs/samba)、DNS域名服务、LAMP编译安装、rsyslog、Linux分区+LVM逻辑卷+(软硬RAID)。

4、了解Linux的RAID、LVM等机制与配置,了解Linux下的各种本地文件系统与网络文件系统,熟练进行调优配置。熟悉各种主流的开源分布式文件系统及分布式存储系统。

5、熟悉Hadoop框架,各个相关软件模块,能够安装、配置、优化hadoop运行系统,熟悉各种hadoop变种产品及相应优缺点,对hadoop平台有自己的理解,了解OpenStack平台,能够搭建、定制OpenStack系统。

6、配置自动化配置自动化(Ansible/SaltStack)、监控(Zabbix/Promethus)、日志分析(ELK、KafKa)、CI/CD(Git、GitLab、Jenkins)。

7、运维安全与调优运维安全(防火墙、CA认证、***)应用软件调优(Web应用调优)系统调优(系统+内核)。

8、运维云计算Hadoop、KVM虚拟化、公有云运维(阿里云)、私有云运维(OpenStack)、Docker容器、Kubernetes(K8S)容器编排工具。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 两台阿里云服务器,如何配置keepalived,mysql双主

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情