企业高并发的成熟解决方案: 数据库主从复制

之前写过Discuz x3.1 读写分离,牵扯到关于数据库的主从复制,但是只对于某一个数据库进行主从复制(数据库中表的增删修改操作)。现在我们要配置的是整个数据库进行整个主从复制(数据库以及表的增删修改操作)。

说明: 此操作都在虚拟机中进行!

第一步: 数据库主从复制的准备工作

1. 数据库主从复制原理

20150304144010

2. 主从数据库环境搭建

主数据库服务器:192.168.197.4

从数据库服务器: 192.168.197.132

20150304144324

20150304144340

3. 主从数据库安装

本来想用mysql来搭建,可是CentOS 7.0默认的数据库是Mariadb,所以只好选择Mariadb来进行搭建安装。如何在CentOS7.0中安装Mariadb,请看之前写的博文。

20150304170505

 第二步: 配置主从复制

1. 配置主数据库

Mariadb配置和MySQL配置差不多。

20150304172755

2. 编辑主数据库的my.cnf文件

这个配置文件中用includedir /etc/my.cnf.d,包含此目录下的配置文件,所以只需要在my.cnf.d目录中创建配置文件即可。

20150304172906

3. 创建主服务器配置文件

20150304173350

4. 添加主服务器配置

20150304173802

5. 在主数据库上添加主从复制账号。

20150304175633

6. master.cnf配置出现问题

error: Found option without preceding group in config file: /etc/my.cnf.d/master.cnf at line: 3

20150304180324

20150304180504

7. 重启主数据库Mariadb

20150304175844

8. 查看主从数据库是否配置成功。

20150304180618

9. 配置从数据库

从数据库配置方法和主数据库配置方法差不多。

20150304180929

10. 创建从数据库配置文件

20150304181228

11. 添加从数据库配置

20150304181752

12. 重启从数据库

20150304182130

13. 从服务器连接主服务器

20150304182643

14. 开启从数据库连接

20150304182752

15. 查看从服务器连接状态

20150304183016

第三步: 测试主从复制

1. 查看从数据库

20150304183336

2. 在主数据库上添加数据库。

20150304183513

3. 再次查看从数据库

20150304183604

4. 如果主数据库重启,从服务器还需要重新连接么?

20150304184235

5. 如果主服务器正常,从服务器重启,还需要重新连接么?

20150304184846

企业高并发的成熟解决方案: 负载均衡LVS搭建

一直想通过LVS来实现负载均衡,看上去很牛逼的样子。所以博主Jhonse哥第一时间看视频教程,网上查资料,终于通过LVS实现了负载均衡,也为以后公司需要的时候可以直接用上。不过此搭建过程都是在虚拟机里操作的。

20150116213224

第一步: 搭建4台服务器

4台服务器都是CentOS 7.0,至于如何在虚拟机里创建CentOS,请看之前的博文。

20150119120613

第二步: 给4台服务器分配IP

分配IP可以采取两种方式: 自动分配,手动分配。

1. 自动分配

这个比较简单,如果在安装完CentOS 7.0之后,虽然选择的自动分配IP,但是获取不到IP,为什么呢?

20150119121236

如何设置才能自动分配IP呢?找到网卡配置文件。

20150119121455

编辑ifcfg-eno16777736,并修改ONBOOT为yes,以及BOOTPROTO为dhcp.

20150119121553

保存退出,然后重新启动network服务。

20150119122030

如果提示这个错误,请开启虚拟机对应的服务即可。

20150119122156

重启network服务,即可获得IP地址。

20150119122312

2. 手动分配IP

20150119122608

重新启动network服务,即可获得IP地址。

20150119122748

第三步: 通过4台服务器的IP,对应的分配负载均衡服务器,以及APP服务器

负载均衡主机:  192.168.197.131

负载均衡备机:  192.168.197.4

APP服务器1:   192.168.197.132

APP服务器2:   192.168.197.133

虚拟IP(访问IP): 192.168.197.100

20150119123950

第四步: 开始搭建负载均衡

1. 配置APP服务器站点

在/var/www/html/目录下添加index.php文件

20150119141947

关闭防火墙

20150119142046

展示结果

20150119145031

20150119151013

 

2. 为APP服务器配置虚拟IP

添加虚拟IP配置文件

20150119124835

编辑ifcfg-lo:0, 记得NETMASK=255.255.255.255,不然无法ping通。

20150119150730

然后保存退出,重启network服务

20150119125353

接着修改/etc/rc.local文件

20150119130708

然后执行route add -host 192.168.197.100 dev lo:0

20150119144239

调整/proc响应参数,修改 /etc/sysctl.conf

20150119130816

使用sysctl -p命令来查询是否正确

20150119130957

查看虚拟IP

20150119131048

根据以上方法将APP服务器二也设置好虚拟IP.

20150119141526

3. 设置负载均衡主机

需要安装ipvsadm、keepalived软件,而CentOS7.0自带了。

20150119151758

20150119151942

找到keepalived配置文件: /etc/keepalived/keepalived.conf

20150119153757

! Configuration File for keepalived

global_defs {
   notification_email {
	admin@jhonse.com #故障接受联系人
   }
   notification_email_from Alexandre.Cassen@firewall.loc #故障发送人
   smtp_server 192.168.200.1 #本机发送邮件
   smtp_connect_timeout 30 #BACKUP上修改为LVS_BACKUP
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER #BACKUP上修改为BACKUP
    interface eno16777736 #网卡接口名称
    virtual_router_id 51 #虚拟路由标识,主从相同
    priority 100 #BACKUP上修改为90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111 #主从认证密码必须一致
    }
    virtual_ipaddress {  #Web虚拟IP(VTP)
        192.168.197.100
    }
}

virtual_server 192.168.197.100 80 {  #定义虚拟IP和端口
    delay_loop 6  #检查真实服务器时间,单位秒
    lb_algo wrr    #设置负载调度算法,rr为轮训
    lb_kind DR   #设置LVS负载均衡DR模式
    nat_mask 255.255.255.0
    persistence_timeout 50 #同一IP的连接60秒内被分配到同一台真实服务器
    protocol TCP  #使用TCP协议检查realserver状态

    real_server 192.168.197.132 80 {  #第一个web服务器
        weight 1  #节点权重值
        TCP_CHECK {  #健康检查方式
            connect_timeout 3  #连接超时
            nb_get_retry 3 #重试次数
            delay_before_retry 3 #重试间隔/S
        }
    }
	
	real_server 192.168.197.133 80 {  #第二个web服务器
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

启动keepalived

20150119152649

查看当前连接负载的情况

20150119152737

关闭防火墙

20150119152829

查看效果:

20150119154011

20150119154436

20150119154519

当一台APP服务器挂了的效果是:

20150119154712

20150119154740

4. 设置负载均衡备机

其实和配置负载均衡主机差不多,只是要keepalived配置文件不一致而已,配置文件中已注释了。

20150119155010

效果:

20150119155314

当负载均衡主机挂了的时候,负载均衡备机开始工作。

20150119155504

20150119155542