目录

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集群的搭建

以下操作在三个节点都要执行:

  1. # yum install MariaDB-Galera-server MariaDB-client galera -y

安装完后的配置文件:

  1. # ll /etc/my.cnf.d/
  2. total
  3. -rw-r--r-- root root Oct : client.cnf
  4. -rw-r--r-- root root Oct : mysql-clients.cnf
  5. -rw-r--r-- root root Aug : server.cnf
  6. -rw-r--r-- root root Aug : tokudb.cnf

启动数据库

  1. # /etc/init.d/mysql start

加固数据库

  1. # mysql_secure_installation

我这里密码是123456,不必一致

授权认证用户:

  1. # mysql -p123456

添加集群认证用户:

  1. MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'galera'@'%' IDENTIFIED BY 'galera' WITH GRANT OPTION;
  2. MariaDB [(none)]> flush privileges;

停止所有节点mysql服务

  1. # /etc/init.d/mysql stop

在 [mariadb] 模块中添加如下:

Controller1 :

  1. [mariadb]
  2. query_cache_size=              # 关闭查询缓存
  3. binlog_format=ROW              # binlog文件格式:行
  4. default_storage_engine=innodb         # Mariadb 存储引擎
  5. innodb_autoinc_lock_mode=           #主键自增模式修改为交叉模式
  6. wsrep_provider=/usr/lib64/galera/libgalera_smm.so #galera 库文件
  7. wsrep_cluster_address=gcomm://192.168.0.12,192.168.0.13 # galera集群url
  8. wsrep_cluster_name='openstack'                # galera集群名称
  9. wsrep_node_address='192.168.0.11'             # 该节点的地址
  10. wsrep_node_name='controller1'               # 该节点的主机名
  11. wsrep_sst_method=rsync                   # 拷贝模式
  12. wsrep_sst_auth=galera:galera               # galera集群认证用户:密码

Controller2:

  1. [mariadb]
  2. query_cache_size=
  3. binlog_format=ROW
  4. default_storage_engine=innodb
  5. innodb_autoinc_lock_mode=
  6. wsrep_provider=/usr/lib64/galera/libgalera_smm.so
  7. wsrep_cluster_address=gcomm://192.168.0.11,192.168.0.13
  8. wsrep_cluster_name='openstack'
  9. wsrep_node_address='192.168.0.12'
  10. wsrep_node_name='controller2'
  11. wsrep_sst_method=rsync
  12. wsrep_sst_auth=galera:galera

Controller3:

  1. [mariadb]
  2. query_cache_size=
  3. binlog_format=ROW
  4. default_storage_engine=innodb
  5. innodb_autoinc_lock_mode=
  6. wsrep_provider=/usr/lib64/galera/libgalera_smm.so
  7. wsrep_cluster_address=gcomm://192.168.0.11,192.168.0.12
  8. wsrep_cluster_name='openstack'
  9. wsrep_node_address='192.168.0.13'
  10. wsrep_node_name='controller3'
  11. wsrep_sst_method=rsync
  12. wsrep_sst_auth=galera:galera

这里,启动第一个集群节点有点特殊:

  1. Controller1:
  2. /etc/init.d/mysql bootstrap
  3.  
  4. Controller2:
  5. /etc/init.d/mysql start
  6.  
  7. Controller3:
  8. /etc/init.d/mysql start

登录任意节点进行验证:

  1. # mysql -p123456
  2. MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';
  3.  
  1. 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集群搭建完毕。

在集群搭建完毕后在写其他的配置文件:

  1. # vim server.cnf
  2. [mariadb-10.0]
  3. port =
  4. bind_address = 192.168.0.11
  5. tmpdir = /tmp
  6. skip-external-locking
  7. skip-name-resolve
  8. max_connections=
  9. innodb_flush_log_at_trx_commit=
  10. innodb_log_file_size=100m
  11. innodb_log_files_in_group=
  12. thread_concurrency=
  13. innodb_thread_concurrency=
  14. innodb_commit_concurrency=
  15. character-set-server = utf8
  16. collation-server = utf8_general_ci
  17. event_scheduler = ON
  18. max_allowed_packet = 20M

三个controller节点都需要监听各自的管理地址。

注意:

当所有节点都宕机的情况下,再次启动节点,Mariadb-Galera集群会出现无法启动的现象
Mariadb-Galera集群启动是有顺序的,遵循一个原则:最后宕机的最先启动,因为集群认为这个节点的数据是最新的。

[ Openstack ] Openstack-Mitaka 高可用之 Mariadb-Galera集群部署的更多相关文章

  1. MariaDB Galera集群部署--技术流ken

    Galera集群介绍 MariaDB集群是MariaDB同步多主机集群.它仅支持XtraDB/ InnoDB存储引擎. 主要功能 同步复制 真正的multi-master,即所有节点可以同时读写数据库 ...

  2. 高可用Mysql架构_Mycat集群部署(HAProxy + 两台Mycat+Mysql双主双从)

    既然大家都知道了Mysql分布式在大型网站架构中的作用,在这里就不再阐述.本片博客文章是基于我曾经搭建过的一个Mysql集群基础上实现的,实现过双主热备.读写分离.分库分表. 博客链接:http:// ...

  3. Sentry(v20.12.1) K8S 云原生架构探索,玩转前/后端监控与事件日志大数据分析,高性能+高可用+可扩展+可伸缩集群部署

    Sentry 算是目前开源界集错误监控,日志打点上报,事件数据实时分析最好用的软件了,没有之一.将它部署到 Kubernetes,再搭配它本身自带的利用 Clickhouse (大数据实时分析引擎)构 ...

  4. Linux下MySQL/MariaDB Galera集群搭建过程【转】

    MariaDB介绍 MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证. MariaDB的目的是完全兼容MySQL,包 ...

  5. Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群

    大纲一.前言二.环境准备三.Corosync 安装与配置四.Pacemaker 安装与配置五.DRBD 安装与配置六.MySQL 安装与配置七.crmsh 资源管理 推荐阅读: Linux 高可用(H ...

  6. 高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南

    原文:http://my.oschina.net/wstone/blog/365010#OSC_h3_13 (WJW)高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南 [X] ...

  7. HAProxy+Varnish+LNMP实现高可用负载均衡动静分离集群部署

    HAProxy高可用负载均衡集群部署 基本信息: 系统平台:VMware WorkStation 系统版本: CentOS Linux release 7.2.1511 (Core) 内核版本: 3. ...

  8. 分布式架构高可用架构篇_01_zookeeper集群的安装、配置、高可用测试

    参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...

  9. JMS之——ActiveMQ 高可用与负载均衡集群安装、配置(ZooKeeper + LevelDB + Static discovery)

    一.说明 从 ActiveMQ 5.9 开始, ActiveMQ 的集群实现方式取消了传统的 Master-Slave 方式,增加了基于ZooKeeper + LevelDB 的 Master-Sla ...

  10. Mariadb galera 集群

    部署galera 多主架构 (galera集群多用于关键性业务,因为galera集群为了数据的一致性,采用的是同步的机制,这就使galera牺牲了一部分性能来换取数据一致性.) 环境准备:三台服务器 ...

随机推荐

  1. Visual Studio 2013安装包

    点击下载

  2. Daily Scrum02 12.05

    deadline果然是第一生产力...这学期一下子4~5个大的Project.然后截止日期都在近期.所有的组员都很辛苦!大家加油~ 这个scrum是当天过后一天补上的.因为当前负责的同学正在忙于编译大 ...

  3. C#-WinForm控制输入框只接受数字输入

    背景 给导师上一节c#编写数据库应用程序的课,模拟ATM自助取款机的功能写了个winForm程序,关于金额的输入肯定是数字,因此避免输入格式不正确的数字带来异常,直接在输入时进行校验. 封装函数 C# ...

  4. lintcode-137-克隆图

    137-克隆图 克隆一张无向图,图中的每个节点包含一个 label 和一个列表 neighbors. 数据中如何表示一个无向图?http://www.lintcode.com/help/graph/ ...

  5. lintcode-135-数字组合

    135-数字组合 给出一组候选数字(C)和目标数字(T),找到C中所有的组合,使找出的数字和为T.C中的数字可以无限制重复被选取. 例如,给出候选数组[2,3,6,7]和目标数字7,所求的解为: [7 ...

  6. java生成和解析二维码

    前言 现在,二维码的应用已经非常广泛,在线生成器也是诸多,随手生成. 所以就和大家分享一个小案例,用zxing来做一个的二维码生成器,当然这个例子是比较简单,若是写的不好请多多包涵. ZXING项目是 ...

  7. FAQ: SNMP on NetScaler Appliance

    FAQ: SNMP on NetScaler Appliance https://support.citrix.com/article/CTX122436 https://docs.citrix.co ...

  8. 【BZOJ 3505】 [Cqoi2014]数三角形 容斥原理+排列组合+GCD

    我们先把所有三角形用排列组合算出来,再把一行一列上的三点共线减去,然后我们只观察向右上的三点共线,向左上的乘二即可,我们发现我们如果枚举所有的两边点再乘中间点的个数(GCD),那么我们发现所有的两边点 ...

  9. android studio的弹出层

    <activity android:name=".SecondActivity" android:theme="@style/Theme.AppCompat.Dia ...

  10. i=i+1与i+=1的区别及效率(Java)

    原博客地址 在做个java优化的PPT时,看到了i=i+1与i+=1的区别,在这之前还真没想到那么细. 1.x=x+1,x+=1及x++的效率哪个最高?为什么? x=x+1最低,因为它的执行如下. ( ...