(第十八周作业)
(part1 的链接为 https://www.jianshu.com/p/4c1bf1daabaf)
3、采用corosync v2+pacemaker实现mariadb的高可用
需要3台虚拟机,ABC三台虚拟机,IP分别是192.168.184.136、192.168.184.137、192.168.184.138
1)ABC三台服务器做时间同步,可以使用NPT或chronyc,三台都执行以下命令
yum install chrony -y
systemctl start chronyd
systemctl enable chronyd
2)设置主机名和配置hosts文件、建立ssh免密钥登陆
A机:hostnamectl --static set-hostname nodea.magedu.com
B机:hostnamectl --static set-hostname nodeb.magedu.com
C机:hostnamectl --static set-hostname nodec.magedu.com
修改hosts文件
A机:vi /etc/hosts
127.0.0.1 nodea.magedu.com nodea
192.168.184.136 nodea.magedu.com nodea
192.168.184.137 nodeb.magedu.com nodeb
192.168.184.138 nodec.magedu.com nodec
B机和C机也类似修改。
A机:
# ssh-keygen
# ssh-copy-id -i /root/.ssh/id_rsa root@nodeb
# ssh-copy-id -i /root/.ssh/id_rsa root@nodec
然后ssh 到另外两台,第一次要输入yes
B机和C机也类似操作。
3)ABC机安装mariadb, pacemaker corosync
# yum -y install mariadb-server
# systemctl enable mariadb.service
# yum -y install pacemaker corosync
# systemctl start corosync.service pacemaker.service
4)ABC机安装nfs
# yum -y install nfs-utils
# mkdir /mysql
# chown mysql.mysql /mysql
在A机执行:
配置NFS目录
# vi /etc/exports
/mysql 192.168.184.0/24(rw,no_root_squash)
在BC机执行:
# showmount -e 192.168.184.136
# mount -t nfs 192.168.184.136:/mysql /mysql
5)在ABC机配置数据库
# vim /etc/my.cnf
datadir=/mysql
skip_name_resolve=on
innodb_file_per_table=on
启动mysql数据库
6)在A机配置corosync.conf文件
# vi /etc/corosync/corosync.conf
totem { #定义心跳信息传递信息
version: 2 #定义corosync版本
crypto_cipher: aes128
crypto_hash: sha1
secauth: on #是否需要安全认证
interface {
ringnumber: 0 #起始号
bindnetaddr: 192.168.184.0 #绑定在哪个网络地址
mcastaddr: 239.255.1.1 #组播地址,为了与另一个节点传递心跳信息
mcastport: 5405 #组播地址端口号
ttl: 1
}
}
nodelist {
node {
ring0_addr: 192.168.184.136
nodeid: 1
}
node {
ring0_addr: 192.168.184.137
nodeid: 2
}
node {
ring0_addr: 192.168.184138
nodeid: 3
}
}
logging { #定义日志功能
fileline: off
to_stderr: no #是否将错误日志输出到终端
to_logfile: yes #是否启用专门的日志文件
logfile: /var/log/cluster/corosync.log #日志文件存放位置
to_syslog: no #是否将日志记录到linux默认日志文件中
debug: off #是否开启debug日志信息
timestamp: on #是否开启日志记录时间戳
logger_subsys {
subsys: QUORUM
debug: off
}
}
quorum {
provider: corosync_votequorum
}
7)在A机创建一个authkey文件,
# cd /dev/
# mv random random.bak
# ln -sv urandom random
# corosync-keygen
# rm -rf random
# mv random.bak random
# cd /etc/corosync/
复制到BC机上
# scp corosync.conf authkey nodeb:/etc/corosync/
# scp corosync.conf authkey nodec:/etc/corosync/
8)在ABC机上启动corosync和pacemaker服务。
# systemctl restart corosync.service
# systemctl restart pacemaker.service
9)在A机上安装crmsh,完成资源配置
在https://github.com/ClusterLabs/crmsh地址下载源码,解压后,用以下命令进行编译安装:
# ./autogen.sh
#./configure
#make && make install
安装好后,进行配置
# crm configure
crm(live)configure# property stonith-enabled=false
rm(live)configure# primitive mysqlip ocf:heartbeat:IPaddr params ip=’192.168.184.100’ op start timeout=60s op stop timeout=60s op monitor interval=20s timeout=40s
crm(live)configure# primitive mysqlstore ocf:heartbeat:Filesystem params device=’192.168.184.136:/data’ directory=’/data’ fstype=’nfs’ op start timeout=60s op stop timeout=60s op monitor interval=20s timeout=40s
crm(live)configure# primitive mysqlserver lsb:mysqld params op start timeout=60s op stop timeout=60s op monitor interval=20s timeout=40s
crm(live)configure# group mysqlservice mysqlip mysqlstore mysqlserver
crm(live)configure# order mysqlip_before_mysqlstore Mandatory: mysqlip mysqlstore
crm(live)configure# order mysqlstore_before_mysqlserver Mandatory: mysqlstore mysqlserver
crm(live)configure# verify
crm(live)configure# commit
crm(live)configure# bye
10)查看节点状态
#crm status
4、采用Corosync+Pacemaker+nfs实现http高可用
使用3台虚拟机:
A机:主机名nodeA IP地址:192.168.184.150 安装corosync+pacemaker+httpd
B机:主机名nodeB IP地址:192.168.184.151 安装corosync+pacemaker+httpd
C机:主机名nfsShare IP地址:192.168.184.152 安装nfs,提供磁盘共享
1)设置主机名和hosts文件
A机:hostnamectl --static set-hostname nodeA
B机:hostnamectl --static set-hostname nodeB
C机:hostnamectl --static set-hostname nfsShare
在A机和B机修改/etc/hosts文件
# vi /etc/hosts
增加以下两行内容,这样可以用主机名进行解析通信。
192.168.184.150 nodeA
192.168.184.151 nodeB
2)使用ssh密钥实现A机和B机互相通信。
A机:
# ssh-keygen
# ssh-copy-id -i /root/.ssh/id_rsa root@nodeA
B机:
# ssh-keygen
# ssh-copy-id -i /root/.ssh/id_rsa root@nodeB
然后ssh 到另外一台,第一次要输入yes,把密钥指纹保存一下。
3)设置ntp和crontab做时间同步
A机和B机上都要执行
# yum install ntp -y
# crontab -e
增加一个NTP同步任务
*/3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &> /dev/null
4)设置NFS
C机:
# yum install nfs-utils -y
# mkdir /web/htdocs
# echo "<h1>this page is NFS share Page</h1>" >> /web/htdocs/index.html
# vi /etc/exports
/web/htdocs 192.168.184.0/24(rw)
重启nfs
# service nfs start
5)在A机和B机上安装corosync、pacemaker和httpd
# yum install corosync pacemaker httpd -y
6)在A机上创建corosync.conf配置文件
vi /etc/corosync/corosync.conf
compatibility: whitetank #是否兼容旧版本的corosync
totem {
version:2
secauth: on
threads:0 #启动多少个线程处理心跳信息
interface {
ringnumber:0
bindnetaddr:192.168.184.0
mcastaddr: 239.255.1.1
mcastport:5405
ttl:1
}
}
logging {
fileline: off
to_stderr: no
to_logfile: yes
to_syslog: no
logfile: /var/log/cluster/corosync.log
debug: off
timestamp: on
logger_subsys {
subsys: AMF
debug: off
}
}
amf {
mode: disabled
}
service{ #设定使用pacemaker服务
ver:0
name: pacemaker
}
aisexec{ #定义运行时使用的用户和组
user: root
group: root
}
# scp corosync.conf root@nodeB:/etc/corosync/
7)在A机上创建authkey文件再复制到B机
# cd /dev/
# mv random random.bak
# ln -sv urandom random
# corosync-keygen
# rm -rf random
# mv random.bak random
# cd /etc/corosync/
# scp authkey root@nodeB:/etc/corosync/
8)重启corosync、pacemaker和httpd服务
# systemctl restart corosync.service
# systemctl restart pacemaker.service
# systemctl restart httpd.service
9) 在A机上安装crmsh
#cd /tmp
# wget http://www.rpmfind.net/linux/epel/6/x86_64/Packages/p/pssh-2.3.1-5.el6.noarch.rpm
# wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/x86_64/crmsh-1.2.6-0.rc2.2.1.x86_64.rpm
#yum install pssh-2.3.1-5.el6.noarch.rpm
#yum install crmsh-1.2.6-0.rc2.2.1.x86_64.rpm
10)在A机上执行
#crm
crm(live)# configure
crm(live)configure# property stonith-enabled=false
crm(live)configure# property no-quorum-policy=ignore
crm(live)configure# verify
crm(live)configure# commit
定义资源,包括webip,webserver,webstore
crm(live)configure# primitive webip ocf:IPaddr params ip=192.168.184.200 op monitor interval="30s" timeout="20s"
crm(live)configure# primitive webserver lsb:httpd op monitor interval="30s" timeout="20s"
crm(live)configure# primitive webstore ocf:Filesystem params device="192.168.184.152:/web/htdocs" directory="/var/www/html" fstype="nfs" op monitor interval="60s" timeout="40s" op start timeout="60s" interval="0" op stop timeout="60s" interval="0"
crm(live)configure# verify
定义组和顺序约束
crm(live)configure# group webservice webip webstore webserver
crm(live)configure# order webip_before_webstore_before_webserver inf:webip webstore webserver
crm(live)configure# verify
crm(live)configure# commit
11)在A机上执行,查看状态
# crm
crm(live)# status
12)使用浏览器查看网站
http://192.168.184.200
13)验证,把nodeA下线,查看状态,再上线
在A机上执行
# crm node standby #把nodeA下线
# crm status 查看状态,发现资源已转移至node2
再查看网页http://192.168.184.200发现仍可正常访问
# crm node online #把nodeA上线
网友评论