[ Openstack ] Openstack-Mitaka 高可用之 Mariadb-Galera集群部署
目录
Openstack-Mitaka 高可用之 概述
Openstack-Mitaka 高可用之 环境初始化
Openstack-Mitaka 高可用之 Mariadb-Galera集群部署
Openstack-Mitaka 高可用之 Rabbitmq-server 集群部署
Openstack-Mitaka 高可用之 memcache
Openstack-Mitaka 高可用之 Pacemaker+corosync+pcs高可用集群
Openstack-Mitaka 高可用之 认证服务(keystone)
OpenStack-Mitaka 高可用之 镜像服务(glance)
Openstack-Mitaka 高可用之 计算服务(Nova)
Openstack-Mitaka 高可用之 网络服务(Neutron)
Openstack-Mitaka 高可用之 Dashboard
Openstack-Mitaka 高可用之 启动一个实例
Openstack-Mitaka 高可用之 测试
简介及特点
MariaDB Galera Cluster主要功能:
(1)多个节点数据同步复制
(2)每个节点都是主节点,每个节点都有全部的数据
(3)每个节点都可以提供读写操作
(4)失效节点自动剔除,新节点加入自动同步(慎重,新节点加入会造成锁表)
优点:
(1)多主的结构,不存在同步延迟的问题。(master-slave是异步同步数据,Galera是同步同步数据)
(2)不存在事务丢失的情况(有待验证)
(3)节点都可以进行读写,客户端可以任意连接到其中节点,增强负载能力
缺点:
(1)加入新节点时,同步数据会造成锁表
(2)对于写入操作会发生到每个节点上
(3)多少个节点就有多少份数据
(4)网络不稳,会出现脑裂情况,服务将不可用,不适用与重要数据的生产环境
(5)仅支持InnoDB/XtraDB存储引擎
工作流程图

当客户端发送一个commit命令,在事务被提交之前,所有对数据的更改都会被write-set收集起来,并且将write-set记录的内容发送给其他节点。
write-set将在每个节点上使用搜索到的主键进行确认性测试,测试结果决定着节点是否应用write-set更改数据。如果认证测试失败,节点将丢弃write-set;如果测试成功,则事务提交。工作如下:

Galera集群的搭建
以下操作在三个节点都要执行:
# yum install MariaDB-Galera-server MariaDB-client galera -y
安装完后的配置文件:
# ll /etc/my.cnf.d/
total
-rw-r--r-- root root Oct : client.cnf
-rw-r--r-- root root Oct : mysql-clients.cnf
-rw-r--r-- root root Aug : server.cnf
-rw-r--r-- root root Aug : tokudb.cnf
启动数据库
# /etc/init.d/mysql start
加固数据库
# mysql_secure_installation
我这里密码是123456,不必一致
授权认证用户:
# mysql -p123456
添加集群认证用户:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'galera'@'%' IDENTIFIED BY 'galera' WITH GRANT OPTION;
MariaDB [(none)]> flush privileges;
停止所有节点mysql服务
# /etc/init.d/mysql stop
在 [mariadb] 模块中添加如下:
Controller1 :
[mariadb]
query_cache_size= # 关闭查询缓存
binlog_format=ROW # binlog文件格式:行
default_storage_engine=innodb # Mariadb 存储引擎
innodb_autoinc_lock_mode= #主键自增模式修改为交叉模式
wsrep_provider=/usr/lib64/galera/libgalera_smm.so #galera 库文件
wsrep_cluster_address=gcomm://192.168.0.12,192.168.0.13 # galera集群url
wsrep_cluster_name='openstack' # galera集群名称
wsrep_node_address='192.168.0.11' # 该节点的地址
wsrep_node_name='controller1' # 该节点的主机名
wsrep_sst_method=rsync # 拷贝模式
wsrep_sst_auth=galera:galera # galera集群认证用户:密码
Controller2:
[mariadb]
query_cache_size=
binlog_format=ROW
default_storage_engine=innodb
innodb_autoinc_lock_mode=
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.0.11,192.168.0.13
wsrep_cluster_name='openstack'
wsrep_node_address='192.168.0.12'
wsrep_node_name='controller2'
wsrep_sst_method=rsync
wsrep_sst_auth=galera:galera
Controller3:
[mariadb]
query_cache_size=
binlog_format=ROW
default_storage_engine=innodb
innodb_autoinc_lock_mode=
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.0.11,192.168.0.12
wsrep_cluster_name='openstack'
wsrep_node_address='192.168.0.13'
wsrep_node_name='controller3'
wsrep_sst_method=rsync
wsrep_sst_auth=galera:galera
这里,启动第一个集群节点有点特殊:
Controller1:
/etc/init.d/mysql bootstrap Controller2:
/etc/init.d/mysql start Controller3:
/etc/init.d/mysql start
登录任意节点进行验证:
# mysql -p123456
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';
MariaDB [(none)]> show global status like 'ws%';
注释:
wsrep_cluster_status为Primary,表示节点为主节点,正常读写。
wsrep_ready为ON,表示集群正常运行。
wsrep_cluster_size为3,表示集群有三个节点。
创建数据库进行测试:
MariaDB [(none)]> create database abcd;
然后,登录其他节点数据库查看是否存在。
MariaDB [(none)]> show databases;

Mariadb-Galera集群搭建完毕。
在集群搭建完毕后在写其他的配置文件:
# vim server.cnf
[mariadb-10.0]
port =
bind_address = 192.168.0.11
tmpdir = /tmp
skip-external-locking
skip-name-resolve
max_connections=
innodb_flush_log_at_trx_commit=
innodb_log_file_size=100m
innodb_log_files_in_group=
thread_concurrency=
innodb_thread_concurrency=
innodb_commit_concurrency=
character-set-server = utf8
collation-server = utf8_general_ci
event_scheduler = ON
max_allowed_packet = 20M
三个controller节点都需要监听各自的管理地址。
注意:
当所有节点都宕机的情况下,再次启动节点,Mariadb-Galera集群会出现无法启动的现象
Mariadb-Galera集群启动是有顺序的,遵循一个原则:最后宕机的最先启动,因为集群认为这个节点的数据是最新的。
[ Openstack ] Openstack-Mitaka 高可用之 Mariadb-Galera集群部署的更多相关文章
- MariaDB Galera集群部署--技术流ken
Galera集群介绍 MariaDB集群是MariaDB同步多主机集群.它仅支持XtraDB/ InnoDB存储引擎. 主要功能 同步复制 真正的multi-master,即所有节点可以同时读写数据库 ...
- 高可用Mysql架构_Mycat集群部署(HAProxy + 两台Mycat+Mysql双主双从)
既然大家都知道了Mysql分布式在大型网站架构中的作用,在这里就不再阐述.本片博客文章是基于我曾经搭建过的一个Mysql集群基础上实现的,实现过双主热备.读写分离.分库分表. 博客链接:http:// ...
- Sentry(v20.12.1) K8S 云原生架构探索,玩转前/后端监控与事件日志大数据分析,高性能+高可用+可扩展+可伸缩集群部署
Sentry 算是目前开源界集错误监控,日志打点上报,事件数据实时分析最好用的软件了,没有之一.将它部署到 Kubernetes,再搭配它本身自带的利用 Clickhouse (大数据实时分析引擎)构 ...
- Linux下MySQL/MariaDB Galera集群搭建过程【转】
MariaDB介绍 MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证. MariaDB的目的是完全兼容MySQL,包 ...
- Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群
大纲一.前言二.环境准备三.Corosync 安装与配置四.Pacemaker 安装与配置五.DRBD 安装与配置六.MySQL 安装与配置七.crmsh 资源管理 推荐阅读: Linux 高可用(H ...
- 高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南
原文:http://my.oschina.net/wstone/blog/365010#OSC_h3_13 (WJW)高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南 [X] ...
- HAProxy+Varnish+LNMP实现高可用负载均衡动静分离集群部署
HAProxy高可用负载均衡集群部署 基本信息: 系统平台:VMware WorkStation 系统版本: CentOS Linux release 7.2.1511 (Core) 内核版本: 3. ...
- 分布式架构高可用架构篇_01_zookeeper集群的安装、配置、高可用测试
参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...
- JMS之——ActiveMQ 高可用与负载均衡集群安装、配置(ZooKeeper + LevelDB + Static discovery)
一.说明 从 ActiveMQ 5.9 开始, ActiveMQ 的集群实现方式取消了传统的 Master-Slave 方式,增加了基于ZooKeeper + LevelDB 的 Master-Sla ...
- Mariadb galera 集群
部署galera 多主架构 (galera集群多用于关键性业务,因为galera集群为了数据的一致性,采用的是同步的机制,这就使galera牺牲了一部分性能来换取数据一致性.) 环境准备:三台服务器 ...
随机推荐
- Vue折腾记 - (2)写一个不大靠谱的面包屑组件
先看效果图 我把页面标题和面包屑封装到一起..就不用涉及到组件的通讯了,不然又要去监听路由或者依赖状态去获取 这里写图片描述 疑惑解答: 点击父(也就是折叠菜单)为什么会跑到子菜单第一个 因为我第一个 ...
- URAL 1936 Roshambo(求期望)
Description Bootstrap: Wondering how it's played? Will: It's a game of deception. But your bet inclu ...
- Java集合(2)——深入理解ArrayList、Vector和LinkedList
回顾 Java集合主要分为两个体系结构,Collection和Map.这篇博客主要介绍Collection子接口List下的三个经常使用的实现类:ArrayList.Vector和LinkedList ...
- 当网卡收到的包的目的地址是主机上另一个网卡的地址.arp总结
2019/01/13 今天测试发现结果不符合预期呀,发现设置了arp_filter之后,仍然是能ping通主机上的另外一张网卡.但是现在的问题是 -------------------- 内核中是如何 ...
- Sigar应用
sigar是一个用于获取底层硬件信息比如:CPU,内存,硬盘,网络等等信息的库.其官网如下: https://support.hyperic.com/display/SIGAR/Home 出于项目 ...
- 【莫比乌斯反演】51nod1594 Gcd and Phi
题解 显然可以O(nlogn)计算 代码 //by 减维 #include<set> #include<map> #include<queue> #include& ...
- 洛谷P4591 [TJOI2018]碱基序列 【KMP + dp】
题目链接 洛谷P4591 题解 设\(f[i][j]\)表示前\(i\)个串匹配到位置\(j\)的方案数,匹配一下第\(i\)个串进行转移即可 本来写了\(hash\),发现没过,又写了一个\(KMP ...
- 用伪类实现一个div的宽度和高度是固定百分比
遇到一个题目:一个div宽度是固定百分比的情况下,如何设置高度是宽度的80% 看到题目的第一反应是用js控制,获取到div的宽度之后再用宽度的80%来设置div的高度,但是如何在不用js的情况下,只用 ...
- (一)STM32固件库详解(转载)
本篇博文是转载自emouse,因为不能直接转载,所以是复制过来再发布的. emouse原创文章,转载请注明出处http://www.cnblogs.com/emouse/ 1.1 基于标准外设库的 ...
- WCF分布式开发步步为赢(13):WCF服务离线操作与消息队列MSMQ
之前曾经写过一个关于MSMQ消息队列的文章:WCF分布式开发必备知识(1):MSMQ消息队列 ,当时的目的也是用它来作为学习WCF 消息队列MSMQ编程的基础文章.在那篇文章里,我们详细介绍了MSMQ ...
