- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章linux corosync+pacemaker+drbd+mysql配置安装详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
一, 基本环境介绍及基本环境配置 。
节点1: node1.hulala.com 192.168.1.35 centos6.5_64 添加8G新硬盘 节点2: node1.hulala.com 192.168.1.36 centos6.5_64 添加8G新硬盘 vip 192.168.1.39 。
节点1与节点2均需配置 。
修改主机名:
vim /etc/sysconfig/network HOSTNAME=node1.hulala.com 。
配置hosts解析:
vim /etc/hosts 192.168.1.35 node1.hulala.com node1 192.168.1.36 node2.hulala.com node1 同步系统时间: ntpdate cn.pool.ntp.org 关闭防火墙与SELINUX 。
service iptables stop chkconfig iptables off cat /etc/sysconfig/selinux SELINUX=disabled 。
以上配置在两个节点都需要配置,配置完成之后重启两个节点 。
二:配置ssh互信 。
[root@node1~]#ssh-keygen -t rsa -b 1024 [root@node1~]#ssh-copy-id root@192.168.1.36 [root@node2~]#ssh-keygen -t rsa -b 1024 [root@node2~]#ssh-copy-id root@192.168.1.35 。
三:DRBD的安装与配置(node1和node2执行相同操作) 。
[root@node1~]#wget -c http://elrepo.org/linux/elrepo/el6/x86_64/RPMS/drbd84-utils-8.4.2-1.el6.elrepo.x86_64.rpm [root@node1~]#wget -c http://elrepo.org/linux/elrepo/el6/x86_64/RPMS/kmod-drbd84-8.4.2-1.el6_3.elrepo.x86_64.rpm [root@node1~]#rpm -ivh *.rpm 。
获取一个sha1值做为shared-secret 。
[root@node1~]#sha1sum /etc/drbd.conf 8a6c5f3c21b84c66049456d34b4c4980468bcfb3 /etc/drbd.conf 。
创建并编辑资源配置文件:/etc/drbd.d/dbcluster.res 。
。
以上配置所用参数说明
RESOURCE: 资源名称 PROTOCOL: 使用协议”C”表示”同步的”,即收到远程的写入确认之后,则认为写入完成. NET: 两个节点的SHA1 key是一样的 after-sb-0pri : “Split Brain”发生时且没有数据变更,两节点之间正常连接 after-sb-1pri : 如果有数据变更,则放弃辅设备数据,并且从主设备同步 rr-conflict: 假如前面的设置不能应用,并且drbd系统有角色冲突的话,系统自动断开节点间连接 META-DISK: Meta data保存在同一个磁盘(sdb1) ON <NODE>: 组成集群的节点 将DRBD配置拷贝到node机器
[root@node1~]#scp /etc/drbd.d/dbcluster.res root@192.168.1.36:/etc/drbd.d/ 。
创建资源及文件系统
创建分区(未格式化过) 在node1和node2上创建LVM分区: [root@node1~]#fdisk /dev/sdb 在node1和node2上给资源(dbcluster)创建meta data: [root@node1~drbd]#drbdadm create-md dbcluster 激活资源(node1和node2都得查看) – 首先确保drbd module已经加载 查看是否加载: # lsmod | grep drbd 若未加载,则需加载: # modprobe drbd # lsmod | grep drbd drbd 317261 0 libcrc32c 1246 1 drbd – 启动drbd后台进程: [root@node1 drbd]# drbdadm up dbcluster [root@node2 drbd]# drbdadm up dbcluster 查看(node1和node2)drbd状态: [root@node2 drbd]# /etc/init.d/drbd status GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by dag@Build64R6, 2012-09-06 08:16:10 m:res cs ro ds p mounted fstype 0:dbcluster Connected Secondary/Secondary Inconsistent/Inconsistent C 从上面的信息可以看到,DRBD服务已经在两台机器上运行,但任何一台机器都不是主机器(“primary” host),因此无法访问到资源(block device). 开始同步: 仅在主节点操作(这里为node1) [root@node1 drbd]# drbdadm — –overwrite-data-of-peer primary dbcluster 查看同步状态: [root@node1 drbd.d]# cat /proc/drbd version: 8.4.2 (api:1/proto:86-101) GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by dag@Build64R6, 2012-09-06 08:16:10 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r—– ns:8297248 nr:0 dw:0 dr:8297912 al:0 bm:507 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0 上面的输出结果的一些说明: cs (connection state): 网络连接状态 ro (roles): 节点的角色(本节点的角色首先显示) ds (disk states):硬盘的状态 复制协议: A, B or C(本配置是C) 看到drbd状态为”cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate”即表示同步结束. 也可以这样查看drbd状态: [root@centos193 drbd]# drbd-overview 0:dbcluster/0 Connected Secondary/Primary UpToDate/UpToDate C r—– 创建文件系统: 在主节点(Node1)创建文件系统: [root@node1 drbd]# mkfs -t ext4 /dev/drbd0 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) ……. 180 days, whichever comes first. Use tune2fs -c or -i to override. 注:没必要在辅节点(Node2)做同样的操作,因为DRBD会处理原始磁盘数据的同步. 另外,我们也不需要将这个DRBD系统挂载到任何一台机器(当然安装MySQL的时候需要临时挂载来安装MySQL),因为集群管理软件会处理.还有要确保复制的文件系统仅仅挂载在Active的主服务器上. 。
三:mysql的安装 。
1,在node1和node2节点安装mysql: yum install mysql* -y 2.node1和node2都操作停止mysql服务 [root@node1~]# service mysql stop Shutting down MySQL. [ OK ] 3.node1和node2都操作创建数据库目录并将该目录权限属主修改为mysql [root@host1 /]# mkdir -p /mysql/data [root@host1 /]# chown -R mysql:mysql /mysql 4,关闭mysql临时挂载DRBD文件系统到主节点(Node1): [root@node1 ~]# mount /dev/drbd0 /mysql/ 5.node1和node2都操作修改my.cnf文件修改 在[mysqld]下添加新的数据存放路径 datadir=/mysql/data 7.将默认的数据路径下的所有文件和目录cp到新的目录下(node2不用操作) [root@host1 mysql]#cd /var/lib/mysql [root@host1 mysql]#cp -R * /mysql/data/ node1和node2都操作这里注意copy过去的目录权限属主需要修改为mysql,这里直接修改mysql目录即可. [root@host1 mysql]# chown -R mysql:mysql /mysql 8.启动node1上的mysql进行登陆测试 [root@host1 mysql]# mysql 9.在节点Node1卸载DRBD文件系统 [root@node1 ~]# umount /var/lib/mysql_drbd [root@node1 ~]# drbdadm secondary dbcluster 将DRBD文件系统挂载节点Node2 [root@node2 ~]# drbdadm primary dbcluster [root@node2 ~]# mount /dev/drbd0 /mysql/ 节点Node2上配置MySQL并测试 [root@node1 ~]# scp node2:/etc/my.cnf /etc/my.cnf [root@node2 ~]# chown mysql /etc/my.cnf [root@node2 ~]# chmod 644 /etc/my.cnf 10. node2上做mysql登陆测试 [root@node2 ~]# mysql 11.在Node2上卸载DRBD文件系统,交由集群管理软件Pacemaker来管理 [root@node2~]# umount /var/lib/mysql_drbd [root@node2~]# drbdadm secondary dbcluster [root@node2~]# drbd-overview 0:dbcluster/0 Connected Secondary/Secondary UpToDate/UpToDate C r—– [root@node2~]# 。
四:Corosync和Pacemaker的安装配置(node1和node2都需安装) 。
安装Pacemaker必须依赖: [root@node1~]#yum -y install automake autoconf libtool-ltdl-devel pkgconfig python glib2-devel libxml2-devel libxslt-devel python-devel gcc-c++ bzip2-devel gnutls-devel pam-devel libqb-devel 安装Cluster Stack依赖: [root@node1~]yum -y install clusterlib-devel corosynclib-devel 安装Pacemaker可选依赖: [root@node1~]yum -y install ncurses-devel openssl-devel cluster-glue-libs-devel docbook-style-xsl 。
Pacemaker安装
[root@node1~]yum -y install pacemaker 。
crmsh安装
[root@node1~]wget http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/network:ha-clustering:Stable.repo [root@node1~]yum -y install crmsh 。
1,配置corosync Corosync Key – 生成节点间安全通信的key: [root@node1~]# corosync-keygen – 将authkey拷贝到node2节点(保持authkey的权限为400): [root@node~]# scp /etc/corosync/authkey node2:/etc/corosync/ 2,[root@node1~]# cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf 编辑/etc/corosync/corosync.conf
。
– 创建并编辑/etc/corosync/service.d/pcmk,添加”pacemaker”服务 [root@node1~]# cat /etc/corosync/service.d/pcmk service { # Load the Pacemaker Cluster Resource Manager name: pacemaker ver: 1 } 将上面两个配置文件拷贝到另一节点 [root@node1]# scp /etc/corosync/corosync.conf node2:/etc/corosync/corosync.conf [root@node1]# scp /etc/corosync/service.d/pcmk node2:/etc/corosync/service.d/pcmk 3,启动corosync和Pacemaker 分别在两个节点上启动corosync并检查. [root@node1]# /etc/init.d/corosync start Starting Corosync Cluster Engine (corosync): [ OK ] [root@node1~]# corosync-cfgtool -s Printing ring status. Local node ID -1123964736 RING ID 0 id = 192.168.1.189 status = ring 0 active with no faults [root@node2]# /etc/init.d/corosync start Starting Corosync Cluster Engine (corosync): [ OK ] – 在两节点上分别启动Pacemaker: [root@node1~]# /etc/init.d/pacemaker start Starting Pacemaker Cluster Manager: [ OK ] [root@node2~]# /etc/init.d/pacemaker start Starting Pacemaker Cluster Manager: 。
资源配置 。
配置资源及约束 配置默认属性 查看已存在的配置: [root@node1 ~]# crm configure show node node1.hulala.com node node2.hulala.com property $id="cib-bootstrap-options" dc-version="1.1.8-7.el6-394e906" cluster-infrastructure="classic openais (with plugin)" expected-quorum-votes="2" 禁止STONITH错误: [root@node1 ~]# crm configure property stonith-enabled=false [root@node1 ~]# crm_verify -L 让集群忽略Quorum: [root@node1~]# crm configure property no-quorum-policy=ignore 防止资源在恢复之后移动: [root@node1~]# crm configure rsc_defaults resource-stickiness=100 设置操作的默认超时: [root@node1~]# crm configure property default-action-timeout="180s" 设置默认的启动失败是否为致命的: [root@node1~]# crm configure property start-failure-is-fatal="false" 配置DRBD资源 – 配置之前先停止DRBD: [root@node1~]# /etc/init.d/drbd stop [root@node1~]# /etc/init.d/drbd stop – 配置DRBD资源: [root@node1~]# crm configure crm(live)configure# primitive p_drbd_mysql ocf:linbit:drbd params drbd_resource="dbcluster" op monitor interval="15s" op start timeout="240s" op stop timeout="100s" – 配置DRBD资源主从关系(定义只有一个Master节点): crm(live)configure# ms ms_drbd_mysql p_drbd_mysql meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true" – 配置文件系统资源,定义挂载点(mount point): crm(live)configure# primitive p_fs_mysql ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/var/lib/mysql_drbd/" fstype="ext4" 配置VIP资源 crm(live)configure# primitive p_ip_mysql ocf:heartbeat:IPaddr2 params ip="192.168.1.39" cidr_netmask="24" op monitor interval="30s" 配置MySQL资源 crm(live)configure# primitive p_mysql lsb:mysql op monitor interval="20s" timeout="30s" op start interval="0" timeout="180s" op stop interval="0" timeout="240s" 组资源和约束 通过”组”确保DRBD,MySQL和VIP是在同一个节点(Master)并且确定资源的启动/停止顺序. 启动: p_fs_mysql–>p_ip_mysql->p_mysql 停止: p_mysql–>p_ip_mysql–>p_fs_mysql crm(live)configure# group g_mysql p_fs_mysql p_ip_mysql p_mysql 组group_mysql永远只在Master节点: crm(live)configure# colocation c_mysql_on_drbd inf: g_mysql ms_drbd_mysql:Master MySQL的启动永远是在DRBD Master之后: crm(live)configure# order o_drbd_before_mysql inf: ms_drbd_mysql:promote g_mysql:start 。
配置检查和提交 。
crm(live)configure# verify crm(live)configure# commit crm(live)configure# quit 。
查看集群状态和failover测试 。
状态查看: [root@node1 mysql]# crm_mon -1r Failover测试: 将Node1设置为Standby状态 [root@node1 ~]# crm node standby 过几分钟查看集群状态(若切换成功,则看到如下状态): [root@node1 ~]# crm status 将Node1恢复online状态: [root@node1 mysql]# crm node online [root@node1 mysql]# crm status 。
最后此篇关于linux corosync+pacemaker+drbd+mysql配置安装详解的文章就讲到这里了,如果你想了解更多关于linux corosync+pacemaker+drbd+mysql配置安装详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我听说最好不要从您系统的 Perl 版本所在的 CPAN 安装模块。我知道如何使用命令行安装模块,我只是想知道是否有办法将 CPAN 与系统核心 Perl 分开。 我应该: 下载源代码并专门为这些模块
我听说最好不要从系统的 Perl 版本所在的 CPAN 安装模块。我知道如何使用命令行安装模块,我只是想知道是否有办法将 CPAN 与系统的核心 Perl 分开。 我应该: 下载源代码并专门为这些模块
单独安装 electron 与通过 electron-builder 安装有什么区别?我正在使用 React 构建一个 Electron 应用程序,并且已经找到了一些教程。它们安装 Electron
两者安装有什么区别?我按照安装页面上的说明在全局范围内安装了 webpack,然后我转到了入门指南,据说在那里可以在本地安装 webpack-cli。 CLI = Command Line Inter
我在 OS X Yosemite 上用 PHP 安装了默认的 Apache 服务器,安装了 pear,用 brew 安装了 Solr (brew install solr),现在我正在尝试使用 PEC
我解压并编译了 Ruby 2.1 并安装了几个支持工具。 但是当我安装了 libssl-dev 时,OpenSSL 不会安装。 我在支持 openssl 时遇到这个错误: make: *** No r
我在 android studio 2.3.1 和 gradle 3.2 中设计了 2 到 3 个应用程序。当我从它运行应用程序到任何设备或模拟器时,一切都工作正常。但是当我从构建文件夹中获取该 ap
我注意到我正在读一本书提到通过 apt-get 安装 numpy 和 opencv apt-get install python-numpy python-opencv 但我可以通过以下方式在 pip
我正在尝试在 Windows 8.1 上安装 ansicon。我提取了文件并达到了我需要调用 ansicon -i 的级别。当我在 cmd 中输入此内容并运行 python 脚本时效果很好,但是当我通
我有 linux MINT 17.3 Kernel 4.4.0-81 所有更新可用。 (由于不同的原因,我无法迁移到更新版本的 ubuntu/mint) 我已经通过 PPA 安装了 FFMPEG(不是
尝试在本地运行我的应用程序时出现错误: 我只在 chrome 浏览器中收到此错误。我尝试过不同的东西,但我不确定为什么它是 Chrome 特定的。 最佳答案 我怀疑这不是 Firebase 问题,而是
这是我第一次开发 AngularJS 应用程序并使用脚手架工具 Yeoman ( http://yeoman.io/ )。我想对我的一些图标使用 fontawesome ( http://fortaw
我知道您通常“应该”$ pip install 如果包没有 brew ,但如果有一个你想安装的 python 包,你可以使用 $ pip install或 $ brew install为了?例如,通过
我正在尝试通过 RVM 安装 Ruby 1.9.3。然而,当谈到安装 RubyGems 时,我得到了这个: curl: (22) The requested URL returned error: 4
我是真正提出问题的新手,但你去吧。 我一直在尝试按照安装指南添加 dnsname: https://github.com/containers/dnsname https://github.com/c
Studio更新至0.4.0 建筑产量为“需要1.8版Gradle”;将设置设置为1.8 bin目录; 建立 “要求1.9级”;将设置设置为1.9 bin; 建立 “要求1.8级” 啊。不知道该怎么做
我刚刚注意到 kernel.org 因维护而停机。是否有使用不同镜子的不同公式?或者我可以向 Homebrew 软件添加不同的来源(如 bundler ?)? 谢谢你的帮助! 最佳答案 快速解决方法:
当我运行时: peardev install phpunit/PHPUnit 我得到以下信息: No releases available for package "pear.phpunit.de/P
服务器操作系统为Fedora 24. 64bit。 我想安装 Git 2.6.6。 所以下载源码并安装。 此服务器离线。所以我不使用“yum”。 ./configure --prefix=/usr/l
我正在尝试在我自己的服务器(操作系统:Linux Ubuntu Server 12.04)上安装 OpenEdX,但我遇到了同样的错误。谁能帮帮我? TASK: [ insights | insta
我是一名优秀的程序员,十分优秀!