文档章节

Openstack 中 MySQL主主互备结合keepalived实现高可用

seansa
 seansa
发布于 2017/02/22 15:47
字数 1323
阅读 107
收藏 0

实验环境 服务器test1(主) 192.168.106.156 服务器test2(主) 192.168.106.158 Mysql版本:5.1.73 VM System OS:CentOS 6 X64

一 安装配置mysql主主互备 1.安装Mysql: 需要关闭防火墙、SELINUX,两台机子上要安装同样版本的mysql数据库。

yum install mysql-server

2.创建同步用户:

这里test1和test2互为主从,所以都要分别建立一个同步用户。 在test1、test2两台机子上分别执行:

mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO sync@'%' IDENTIFIED BY '123456';
mysql> flush privileges;

3.修改配置文件:

3.1 test1上mysql的配置文件:

[mysqld]
#log-bin=mysql-bin
server-id=156

log_bin = /var/lib/mysql/mysql-binlog
binlog-ignore-db=mysql
binlog-ignore-db=information_schema

replicate-ignore-db=mysql,information_schema
log-slave-updates
sync_binlog=1
auto_increment_offset=1
auto_increment_increment=2

3.2 test2上mysql的配置文件:

[mysqld]
#log-bin=mysql-bin
server-id=158

auto_increment_offset=2
auto_increment_increment=2
log-slave-updates
sync_binlog=1
log_bin = /var/lib/mysql/mysql-binlog
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
replicate-ignore-db=mysql,information_schema

4.然后,分别重启mysql服务器。

service mysqld restart

5.分别在test1、test2上查看主服务器状态:

  test1上:
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)

mysql> show master status\G
*************************** 1. row ***************************
            File: mysql-binlog.000001
        Position: 106
Binlog_Ignore_DB: mysql,information_schema
1 row in set (0.00 sec)

mysql> 
mysql> unlock tables;
  test2上:
  
mysql> stop slave;
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)

mysql> show master status\G
*************************** 1. row ***************************
            File: mysql-binlog.000001
        Position: 106
Binlog_Ignore_DB: mysql,information_schema
1 row in set (0.00 sec)

mysql> unlock tables;

注:这里锁表的目的是为了生产环境中不让进新的数据,好让从服务器定位同步位置。初次同步完成后,记得解锁。

6.分别在test1、test2上用change master语句指定同步位置:

6.1 test1:
mysql> change master to master_host='192.168.106.158', master_user='sync', master_password='123456', master_log_file='mysql-binlog.000001', master_log_pos=106;
Query OK, 0 rows affected (0.12 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
6.2 test2:
mysql> change master to master_host='192.168.106.156', master_user='sync', master_password='123456', master_log_file='mysql-binlog.000001', master_log_pos=106;
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
  1. 分别在test1、test2上查看从服务器状态:
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.106.158
                  Master_User: repli
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-binlog.000001
          Read_Master_Log_Pos: 106
               Relay_Log_File: mysqld-relay-bin.000002
                Relay_Log_Pos: 254
        Relay_Master_Log_File: mysql-binlog.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:  
          Replicate_Ignore_DB: mysql,information_schema
… …

查看以上两项的值, Slave_IO_Running: Yes Slave_SQL_Running: Yes 均为Yes则表示状态正常。

8.测试: 双向测试,在test1上创建数据库db1,从test2上查看信息;同样,在test2上创建数据库db2后,从test1上查看信息。

二 安装和配置keepalived实现MySQL双主高可用 1.安装 keepalived

yum install keepalived

2.配置keepalived

2.1 test1 192.168.106.156
# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
 
global_defs {
   notification_email {
     admin@tcloudsoft.com
     zhuzy@tcloudsoft.com
   }
   notification_email_from keepalived@localhost  
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
 
vrrp_instance HA_1 {
    state BACKUP                #test1和test2都配置为BACKUP
    interface eth0              #指定HA检测的网络接口
    virtual_router_id 80        #虚拟路由标识,主备相同
    priority 100                #定义优先级,test2设置90
    advert_int 1                #设定test1和test2之间同步检查的时间间隔
    nopreempt                   #不抢占模式。只在优先级高的机器上设置即可
    authentication {
        auth_type PASS
        auth_pass 1111
    }
 
    virtual_ipaddress {                 #设置虚拟IP,可以设置多个,每行一个
        192.168.106.200/24 dev eth0       #MySQL对外服务的IP,即VIP
    }
}
 
virtual_server 192.168.106.200 3306 {
    delay_loop 2                    #每隔2秒查询real server状态
    lb_algo wrr                     #lvs 算法
    lb_kinf DR                      #LVS模式(Direct Route)
    persistence_timeout 50
    protocol TCP
 
    real_server 192.168.106.156 3306 {    #监听本机的IP
        weight 1
        notify_down /etc/keepalived/mysql.sh
        TCP_CHECK {
        connect_timeout 10         #10秒无响应超时
        bingto 192.168.106.200
        nb_get_retry 3
        delay_before_retry 3
        connect_port 3306
        }
    }
 
}

2.2 keepalived检测脚本,当其中一台MySQL服务出现故障down掉时,实现自动切换到正常的MySQL服务器继续提供服务

vi /etc/keepalived/mysql.sh
#!/bin/bash
pkill keepalived
2.3 test2 192.168.106.158
# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
 
global_defs {
   notification_email {
     root@tcloudsoft.com
     zhuzy@tcloudsoft.com
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
 
vrrp_instance HA_1 {
    state BACKUP                #test1和test2都配置为BACKUP
    interface eth0              #指定HA检测的网络接口
    virtual_router_id 80        #虚拟路由标识,主备相同
    priority 90                #定义优先级,test2设置90
    advert_int 1                #设定test1和test2之间同步检查的时间间隔
    authentication {
        auth_type PASS
        auth_pass 1111
    }
 
    virtual_ipaddress {                 #设置虚拟IP,可以设置多个,每行一个
        192.168.106.200/24 dev eth0       #MySQL对外服务的IP,即VIP
    }
}
 
virtual_server 192.168.106.200 3306 {
    delay_loop 2
    lb_algo wrr
    lb_kinf DR
    persistence_timeout 50
    protocol TCP
 
    real_server 192.168.106.158 3306 {    #监听本机的IP
        weight 1
        notify_down /etc/keepalived/mysql.sh
        TCP_CHECK {
        connect_timeout 10
        bingto 192.168.106.200            
        nb_get_retry 3
        delay_before_retry 3
        connect_port 3306
        }
    }
 
}

3.授权VIP的root用户权限 授权远程主机可以通过VIP登录MySQL,并测试数据复制功能

mysql> grant all on *.* to root@'192.168.6.44' identified by '123456';
mysql> grant all on *.* to root@'192.168.106.200' identified by '123456';
mysql> flush privileges;

4.测试keepalived高可用功能 在OpenStack中,测试前需要先完成第三部分的设置 4.1远程主机登录通过VIP 192.168.106.200 登录MySQL,查看MySQL连接状态

mysql> show variables like 'hostname%';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| hostname      | test1 |
+---------------+--------+
1 row in set (0.00 sec)

4.2故障测试,停止test1的MySQL服务,再次查看是否转移至test2服务器上

mysql> show variables like 'hostname%';

三 OpenStack VM单网卡多IP 实现VIP切换的方法 1.使用port_security_enabled属性,port_security_enabled 是在kilo版后加入的Ml2扩展驱动,可能针对整个网络更改,也可针对某个端口更改,默认为true。

neutron port-list
neutron port-update --no-security-groups 413b58fe-44c0-4df2-b588-332d5b6030e9
neutron port-update 413b58fe-44c0-4df2-b588-332d5b6030e9  --port_security_enabled=False

2.使用allowed-address-pairs 来扩展端口属性,允许手动指定端口的mac_address和ip 地址对的流量通过。

neutron port-list
neutron port-show 413b58fe-44c0-4df2-b588-332d5b6030e9
neutron port-update 413b58fe-44c0-4df2-b588-332d5b6030e9 --allowed-address-pairs type=dict list=true ip_address=192.168.106.200
neutron port-update 413b58fe-44c0-4df2-b588-332d5b6030e9 --allowed-address-pairs action=clear

© 著作权归作者所有

seansa
粉丝 0
博文 7
码字总数 3170
作品 0
长沙
运维
私信 提问
构建OpenStack的高可用性(HA,High Availability) .

原文地址:http://blog.csdn.net/hilyoo/article/details/7704280 1、CAP理论 1) CAP 理论给出了3个基本要素: 一致性 ( Consistency) :任何一个读操作总是能读取到之前完成的写操作结果;...

长平狐
2012/08/24
1K
0
OpenStack推出最新版本Newton,显著提升单一云平台 对虚拟化、裸机和容器的管理

2016年10月10日-北京- OpenStack社区日前发布其命名为“Newton”的第14个版本。OpenStack是用于构建云的部署最广泛的开源软件。此次推出的新功能包括:Ironic裸机开通服务,Magnum容器编排集...

玄学酱
2018/05/11
0
0
OpenStack波士顿峰会召开: 借助远程托管私有云、边缘计算及组合型基础设施,赢得新客户、实现新增长

主旨发言、现场演示,OpenStack借助成本效益双赢组合型开放基础设施来展示其在推动创新方面的强大实力 日前,来自六十多个国家数以千计的与会者齐聚OpenStack波士顿峰会,共同讨探讨如何实现...

玄学酱
2018/04/12
0
0
[Ubuntu 12.10] Openstack 多节点安装--前期准备&&网络拓扑

研究openstack也有一段时间了,写了一大堆笔记都没整理,最近要把开发机迁移到openstack上试试,安装一个多节点玩玩,也方便以后新功能测试。 需求描述: 虚拟机实例作为内网开发机、测试机不...

China_OS
2012/11/04
1K
0
服务器集群之keepalived配置高可用(资料)

Linux集群概述 • 根据功能划分为两大类:高可用和负载均衡 • 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 • 实现高可用的开...

寰宇01
2018/05/24
321
0

没有更多内容

加载失败,请刷新页面

加载更多

对比ubuntu与centos系统 ​​​​

CentOS与Ubuntu该如何选择,哪个更好用。笔者在自媒体平台收集了一些网友的观点,较为经典,分享给大家。至于应该选择哪个,希望看完本文章后,读者心中有数。 观点1:CentOS适用于服务器,U...

老孟的Linux私房菜
今天
13
0
Java的基本类型

一、Java的基本类型 Java的基本类型有哪些? boolean char byte short int long float double ? 延伸思考 思考一:为什么有的书籍说Java存在第9种数据类型? 实际上,JAVA中还存在另外一种基...

yumoop
今天
14
0
OSChina 周四乱弹 —— 富婆小时候

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @猿敲月下码 :#今日歌曲推荐# 分享陈慧娴的单曲《夜机》 《夜机》- 陈慧娴 手机党少年们想听歌,请使劲儿戳(这里) @開源中國張學友 :早上...

小小编辑
今天
26
0
MyMinimad ── Linux下用libmad写的mp3解码播放程序(四)

优化了内存使用,不再使用mmap映射整个文件到内存 /* * 本程序是从 minimad 改进而来,如要更详细的说明请参看 minimad.c * * Gu Zhou, 2009/12/25, SiChuan University, China *...

代码强国
今天
18
0
Minikube安装

1、下载Minikube二进制文件 sudo curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/latest/minikube-linux-amd64 2、设置权限 sudo chmod +x minikube......

RogueQ
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部