关闭

openstack HA配置-Mysql

标签: openstackHA
1053人阅读 评论(0) 收藏 举报
分类:

概念

环境准备

两个控制节点

host: controller1
IP: 192.168.0.20

host: controller2
IP: 192.168.0.21

hosts文件

分别在controller1和controller2节点的hosts文件中添加如下

192.168.0.20    controller1
192.168.0.21    controller2

ssh互信

在controller1节点执行如下

# ssh-keygen -t rsa -P ''
# ssh-copy-id -i  /root/.ssh/id_rsa.pub controller2

在controller2节点执行如下

# ssh-keygen -t rsa -P ''
# ssh-copy-id -i  /root/.ssh/id_rsa.pub controller1

时间同步

# apt-get install ntp

安装和配置 corosync+pacemaker

安装 corosync+pacemaker

# apt-get install pacemaker
# apt-get install corosync

配置 corosync+pacemaker

配置文件两个

配置文件:/etc/corosync/corosync.conf

# /etc/corosync/corosync.conf
totem {                           #心跳信息传递层
    version: 2                    #版本
    secauth: on                   #认证信息  一般on
    threads: 0                    #线程
    interface {                   #定义心跳信息传递的接口
        ringnumber: 0
        bindnetaddr: 172.16.0.0   #绑定的网络地址,写网络地址
        mcastaddr: 226.94.1.1     #多播地址
        mcastport: 5405           #多播的端口
        ttl: 1                    #生存周期
    }
}
logging {                         #日志
    fileline: off
    to_stderr: no                 #是否输出在屏幕上
    to_logfile: yes               #定义自己的日志
    to_syslog: no                 #是否由syslog记录日志
    logfile: /var/log/cluster/corosync.log  #日志文件的存放路径
    debug: off
    timestamp: on                 #时间戳是否关闭
    logger_subsys {
        subsys: AMF
        debug: off
    }
}
amf {
    mode: disabled
}
service {
     ver: 0
     name: pacemaker   # pacemaker作为corosync的插件进行工作
}
aisexec {
     user: root
     group: root
}

把节点controller1的配置文件copy到controller2中

# scp /etc/corosync/corosync.conf controller2:/etc/corosync/

认证文件

节点controller1上的操作

# corosync-keygen

注意:
Corosync Cluster Engine Authentication key generator.
Gathering 1024 bits for key from /dev/random.
Press keys on your keyboard to generate entropy (bits = 152).
遇到这个情况,表示电脑的随机数不够,各位朋友可以不停的随便敲键盘,或者安装软件也可以生成随机数

把认证文件也复制到controller2主机上

# scp /etc/corosync/authkey controller2:/etc/corosync/

开启服务和查看集群中的节点信息 (在controller1和controller2上的操作)

开启集群

# service corosync start

查看集群状态

# crm status

注意:
如果启动corosync时无反应也不报错,修改/etc/default/corosync文件,把START=no改为START=yes

安装和配置drbd

安装drbd

# apt-get install drbd8-utils

注意:
在 ubuntu 14.04 下运行 service drbd start 很可能会出现如下错误.
node already registered
* Starting DRBD resources
DRBD module version: 8.4.5
userland version: 8.4.4
you should upgrade your drbd tools!
这是由于 linux 内核版本升级到, 而于自带的 drbd 软件不兼容导致的. 可以通过 ppa 来安装第三方提供的高版本的 drbd 解决, 命令如下:

# apt-get install -y python-software-properties
# add-apt-repository ppa:icamargo/drbd
# apt-get update
# apt-get install -y drbd8-utils

之后应该就可以启动 drbd 了

# service drbd start

配置drbd

配置文件两个

全局配置文件: /etc/drbd.d/global_common.conf
资源配置文件: /etc/drbd.d/mydata.res (没有需要自己创建)

全局配置文件: /etc/drbd.d/global_common.conf

#  /etc/drbd.d/global_common.conf

global {
        usage-count no; # 是否参加DRBD使用者统计,默认是yes
        # minor-count dialog-refresh disable-ip-verification
}
common {
        protocol C;  # DRBD支持三种协议,默认是C 协议
        handlers {
                pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
                pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
                local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
                # fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
                # split-brain "/usr/lib/drbd/notify-split-brain.sh root";
                # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
                # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";
                # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
        }
        startup {
                #wfc-timeout 120; # 启动时连接其他节点的超时时间
                #degr-wfc-timeout 120;
        }
        disk {
                on-io-error detach; # 当磁盘有错误时,不连接
                #fencing resource-only;
        }
        net {
                cram-hmac-alg "sha1"; # 该选项可以用来指定HMAC算法来启用对等节点授权。drbd强烈建议启用对等节点授权机制。可以指定/proc/crypto文件中识别的任一算法。必须在此指定算法,以明确启用对等节点授权机制。
                shared-secret "mydrbdlab"; # 该选项用来设定在对待节点授权中使用的密码,最长64个字符
        }
        syncer {
                rate 1000M; # 设置主备节点同步时的网络速率最大值
        }
}

资源配置文件: /etc/drbd.d/mydata.res

# /etc/drbd.d/mydata.res

resource mydata { # 资源组的名称,mydata 
  on controller1 { # 节点主机名
    device    /dev/drbd0; # 今后使用的设备
    disk      /dev/sda3; #  # 该节点上的用于存放数据的分区号,配置的先前已经创建的分区,sda3修改为创建的分区
    address   192.168.0.20:7789; # 该节点的IP地址
    meta-disk internal; # meta data信息存放的方式
  }
  on controller2 { # 节点主机名
    device    /dev/drbd0; # 今后使用的设备
    disk      /dev/sda3; #  # 该节点上的用于存放数据的分区号,配置的先前已经创建的分区,sda3修改为创建的分区
    address   192.168.0.21:7789; # 该节点的IP地址
    meta-disk internal; # meta data信息存放的方式
  }
}

在controller1节点上操作

创建drbd的资源

# drbdadm create-md mydata # mydata前面创建的资源组名称

(如果出现如下错误:

md_offset21467942912

al_offset21467910144

bm_offset21467254784

Foundext3 filesystem

20964792kB data area apparently used

20964116kB left usable by current configuration

Devicesize would be truncated, which

wouldcorrupt data and result in’access beyond end of device’ errors.

You needto either

  • useexternal meta data (recommended)

  • shrinkthat filesystem first

  • zeroout the device (destroy the filesystem)

Operationrefused.

Command ‘drbdmeta 1 v08 /dev/sdb1 internal create-md’terminated with exit code 40

drbdadm create-md r0exited with code 40 )

执行如下命令:


# dd if=/dev/zero bs=1M count=1of=/dev/sdb1;sync

再次执行drbdadm create-md r0看到success则表示成功。

启动服务

# service drbd start

在controller2节点上操作

创建drbd的资源

# drbdadm create-md mydata # mydata前面创建的资源组名称

启动服务

# service drbd start

在controller1上执行,设置controller1为drbd的主节点

# drbdadm primary --force mydata

在controller2上执行,设置controller2为drbd的备用节点

# drbdadm  secondary mydata  #把此节点改为drbd的备用节点

查看同步进度

# cat /proc/drbd

此命令可以动态的查看同步进度

# watch -n1 'cat /proc/drbd'

在controller1上,格式化drdb分区并挂载drbd的分区

格式化分区

# mke2fs -t ext4 /dev/drbd0

创建挂载的文件

# mkdir /mnt/mysqldata

挂载文件

# mount /dev/drbd0    /mnt/mysqldata

修改文件权限

# chown -R mysql:mysql /mnt/mysqldata/

安装和配置mysql

安装(同时在controller1和controller2上执行)

# apt-get install mysql-server

配置(同时在controller1和controller2上执行)

配置文件两个
/etc/mysql/my.cnf
vim /etc/apparmor.d/usr.sbin.mysqld

配置文件/etc/mysql/my.cnf

datadir 目录指向预挂载 drbd0目录

# /etc/mysql/my.cnf
... ...
datadir = /mnt/mysqldata/data
... ...

配置文件 vim /etc/apparmor.d/usr.sbin.mysqld

#/var/lib/mysql/ r,行修改为如下
 /mnt/mysqldata/data/ r,
#/var/lib/mysql/** rwk,,行修改为如下
/mnt/mysqldata/data/** rwk,

初始化mysql数据库(只在controller1上执行)

# /usr/bin/mysql_install_db --user=mysql --datadir=/mnt/mysqldata/data/  --basedir=/usr

启动mysql数据库(只在controller1上执行)

# service mysql start

设置mysql管理员密码(只在controller1上执行)

# /usr/bin/mysqladmin -u root password 'root'

整体测试

由以上步骤可以得到mysql数据库在controller1节点上可以正常运行,现在关闭controller1上的数据库,将启动controller2上的数据库。

在controller1上执行如下

停止controller1上的数据库

# service mysql stop

卸载drbd0的挂载点

# umount    /dev/drbd0

将controller1改为备用节点

# drbdadm  secondary mydata

在controller2上执行

将controller2改为主节点

# drbdadm primary mydata

创建挂载的文件

# mkdir /mnt/mysqldata

挂载文件

# mount /dev/drbd0    /mnt/mysqldata

修改文件权限

# chown -R mysql:mysql /mnt/mysqldata/

开启controller2上的mysql数据库

# service mysql start

进入数据库,查看是否一样

# mysql -uroot -proot
> show databases;
0
0
查看评论

openstack运维中mysql集群优化

最近客户那边反映通过UI界面创建虚拟机老是失败,分配浮动IP时候会跳转到其他界面。 这边查看日志时发现nova-api、neutron-api会报错误连接mariadb会报Too many connections 重启控制节点nova、neutron的服务后恢复正常,但不是长久之计,对maria...
  • H_haow
  • H_haow
  • 2017-01-07 12:55
  • 471

openstack-ha部署文档

文档是年初自己手工搭建ha系统的时候写的,后来又提供给其他同事作为部署文档,多次验证过好使。本来不打算发出来,毕竟有一定基础的人照着官方文档(http://docs.openstack.org/ha-guide/)也是可以部署好的,而且技术文档总是写这么详细显得逼格太低了。。。不过毕竟官方文档还是有...
  • liukuan73
  • liukuan73
  • 2016-05-18 21:57
  • 3142

也谈OpenStack中的虚拟机HA

OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它的社区拥有超过130家企业及1350位开发者,这些机构与个人都将OpenStack作为基础设施即服务(IaaS)资源的通用前端。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。做为云计算IAAS层...
  • Shatty
  • Shatty
  • 2016-03-28 17:39
  • 3401

nova-authconsole HA方案memcached配置

在配置nova-authconsole HA(多个nova-authconsole实例同时运行)时,需要配置memcached_servers,不然会导致noVNC访问控制台失败(并不是都失败,而是轮询到token正确的nova-authconsole实例时成功,其他失败)。在/etc/nova/n...
  • oyym_mv
  • oyym_mv
  • 2016-09-14 17:46
  • 831

Openstack neutron l3 HA的实现

记录学习neutron l3 HA实现的过程。 1.  router所在的所有节点的namespace中都会启动keepalived服务,通过keepalived服务来控制节点的选举: keepalived的进程: keepalived -P -f /var/lib/ne...
  • allenson1
  • allenson1
  • 2017-01-17 10:52
  • 885

openstack中的aggregate az, cell, region ( by quqi99 )

openstack中的aggregate az, cell, region ( by quqi99 ) 作者:张华  发表于:2013-03-18 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/qu...
  • quqi99
  • quqi99
  • 2013-03-18 15:46
  • 6987

Mysql HA实现MYSQL的高可用

一、背景 当前大多网站采用MYSQL+Linux+APACHE这种经典配置,如何防止单点失败造成的整个网站的不可用是网站管理者必须要考虑的问题,其中数据库的高可用性(Database server’s high availability)是重中之重。 对于数据库的高可用性,各商业软件的厂商都有各...
  • wulantian
  • wulantian
  • 2013-09-17 10:28
  • 3054

OpenStack 最小化安装配置(三):MySQL服务配置

几乎所有的在OpenStack上的用户数据都存储在MySQL服务器上。我这里设置了MySQL服务器的IP地址192.168.137.102 内部通讯的IP地址为192.168.1.102.我们需要安装服务需要的软件。
  • hengrjgc
  • hengrjgc
  • 2014-12-21 17:46
  • 1345

openstack AZ

跟AZ相关的,控制节点和计算节点的服务一般可以分为两类 一类是controller控制节点的服务进程,nova-cert  nova-scheduler, nova-conductor等; 另一类是计算节点进程,nova-compute。 两种分别属于两个不同的AZ(系统配置的AZ)int...
  • tianshi1017
  • tianshi1017
  • 2016-09-23 14:10
  • 900

openstack cinder-volume 的高可用(HA)

为了保证云平台的稳定性,需要做很多部分的高可用。比如控制节点高可用、计算节点高可用、网络节点高可用、存储的高可用等; 控制节点的高可用与网络节点的高可用都有官方的文档,有详细的安装步骤,实现起来相对来说比较简单。存储的高可用在openstack这一块也不用考虑很多,比如ceph、glusterfs自...
  • LL_JCB
  • LL_JCB
  • 2016-07-11 11:16
  • 2053
    个人资料
    • 访问:70100次
    • 积分:1249
    • 等级:
    • 排名:千里之外
    • 原创:55篇
    • 转载:7篇
    • 译文:0篇
    • 评论:4条
    最新评论