corosync的高可用——高可用mariadb數據庫

corosync, pacemaker,nfs高可用mariadb

實驗環境:

4臺CentOS 7 的主機,并關閉的iptalbes和selinux功能

主機1:10.1.43.101 node1 corosync+pacemaker+amp

主機2:10.1.43.102 node2 corosync+pacemaker+amp

主機3:10.1.43.103 node3 corosync+pacemaker+amp

主機4:10.1.43.104 node4 nfs服務器

第一步:

在主機1上修改/etc/hosts配置文件,生成ssh公鑰,把私鑰發送給node2,node3,node4主機

[root@node1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.1.43.101node1
10.1.43.102node2
10.1.43.103node3
10.1.43.104node4
[root@node1 ~]# ssh-keygen
[root@node1 ~]# ssh-copy-id nodeX    #X=2-4
[root@node1 ~]# scp /etc/hosts nodeX:/etc/hosts    #X=2-4

第二步:

在node1-3主機上安裝軟件包,并把httpd和mariadb-server服務設置為開機啟動

[root@node1 ~]# yum -y install httpd php php-mysql mariadb-server corosync pacemaker
[root@node1 ~]# systemctl enable httpd
[root@node1 ~]# systemctl enable mariadb

第三步:

配置node4主機的nfs服務器

[root@node4 ~]# cat /etc/exports
/www 10.1.43.0/24(rw)
/mysql10.1.43.0/24(rw,no_root_squash)
[root@node4 ~]# setfacl -m u:apache:rwx /www    #注意此處的apache帳號的uid和gid應該同node1-3主機上的apache帳號
[root@node4 ~]# chown mysql:mysql /mysql    #注意此處的mysql帳號的uid和gid應該同node1-3主機上的mysql帳號
[root@node4 ~]# setfacl -m u:mysql:rwx /mysql    #注意此處的mysql帳號的uid和gid應該同node1-3主機上的mysql帳號
[root@node4 ~]# ll -d /www /mysql
drwxr-xr-x+ 6 mysql mysql 4096 Nov 24 19:05 /mysql
drwxrwxr-x+ 6 root  root   102 Nov 24 16:30 /www
[root@node4 ~]# cat /www/index.html
<h1>nfs Node</h1>
[root@node4 ~]# systemctl start rpcbind
[root@node4 ~]# systemctl start nfs

第四步:

配置/etc/corosync/corosync.conf配置文件,并生成authkey認證文件,并啟動corosync和pacemeker服務

[root@node1 ~]# corosync-keygen    #生成authkey認證文件
[root@node1 ~]# cat /etc/corosync/corosync.conf
totem {
    version: 2
        
    crypto_cipher: aes256
    crypto_hash: sha1
        
    interface {
        ringnumber: 0
        bindnetaddr: 10.1.0.0
        mcastaddr: 239.255.43.43
        mcastport: 5405
        ttl: 1
    }
}
logging {
    fileline: off
    to_stderr: no
    to_logfile: yes
    logfile: /var/log/cluster/corosync.log
    to_syslog: yes
    timestamp: on
    logger_subsys {
        subsys: QUORUM
        debug: off
    }
}
quorum {
    provider: corosync_votequorum
}
nodelist {
    node {
        ring0_addr: node1
        nodeid: 1
    }
    node {
        ring0_addr: node2
        nodeid: 2
    }
    node {
        ring0_addr: node3
        nodeid: 3
    }
}
[root@node1 ~]# scp -p /etc/corosync/corocsync.conf nodeX:/etc/corosync    #X=2-3
[root@node1 ~]# scp -p /etc/corosync/authkey nodeX:/etc/corosync    #X=2-3
[root@node1 ~]# systemctl start corosync.service pacemaker.service

注意:此處可以使用crm_mon、corosync-cfgtool、corosync-cmapctl  | grep members等命令來查看corosync服務的運行狀態

第五步:

在node1-3主機上配置crmsh軟件,通過交互式的方式來配置corosync的高可用功能

注意:以下安裝的軟件包,來自教學的ftp服務器,沒有的請自行百度下載安裝

         crmsh-2.1.4-1.1.x86_64.rpm

         pssh-2.3.1-4.2.x86_64.rpm

         python-pssh-2.3.1-4.2.x86_64.rpm

[root@node1 ~]# yum -y install ./crmsh-2.1.4-1.1.x86_64.rpm ./pssh-2.3.1-4.2.x86_64.rpm ./python-pssh-2.3.1-4.2.x86_64.rpm
crmsh的配置:
[root@node1 ~]# crm
crm(live)# configure
crm(live)configure# property stonith-enabled=false
crm(live)configure# primitive webip ocf:IPaddr params ip="10.1.43.100" nic="eno16777736" cidr_netmask="16" \
broadcast="10.1.255.255"
crm(live)configure# primitive webserver systemd:httpd op monitor interval=60s timeout=40s
crm(live)configure# primitive mariadb systemd:mariadb op monitor interval=60s timeout=40s
crm(live)configure# primitive webstore ocf:heartbeat:Filesystem params device="10.1.43.104:/www" \
directory="/var/www/html" fstype="nfs" op start timeout=60s op stop timeout=60s op monitor interval=60s timeout=40s
crm(live)configure# primitive webmysql ocf:heartbeat:Filesystem params device="10.1.43.104:/mysql" \
directory="/var/lib/mysql" fstype="nfs" op start timeout=60s op stop timeout=60s op monitor interval=60s timeout=40s
crm(live)configure# group webservice webstore webmysql mariadb webserver webip
crm(live)configure# verity
crm(live)configure# commit
crmsh的最終配置如下:
crm(live)configure# show
node 1: node1 \
        attributes standby=on
node 2: node2 \
        attributes standby=off
node 3: node3 \
        attributes standby=off
primitive mariadb systemd:mariadb \
        op monitor interval=60s timeout=40s
primitive webip IPaddr \
        params ip=10.1.43.100 nic=eno16777736 cidr_netmask=16 broadcast=10.1.255.255
primitive webmysql Filesystem \
        params device="10.1.43.104:/mysql" directory="/var/lib/mysql" fstype=nfs \
        op start timeout=60s interval=0 \
        op stop timeout=60s interval=0 \
        op monitor interval=60s timeout=40s
primitive webserver systemd:httpd \
        op monitor interval=60s timeout=40s
primitive webstore Filesystem \
        params device="10.1.43.104:/www" directory="/var/www/html" fstype=nfs \
        op start timeout=60s interval=0 \
        op stop timeout=60s interval=0 \
        op monitor interval=60s timeout=40s
group webservice webstore webmysql mariadb webserver webip
property cib-bootstrap-options: \
        have-watchdog=false \
        dc-version=1.1.13-10.el7-44eb2dd \
        cluster-infrastructure=corosync \
        stonith-enabled=false \
        last-lrm-refresh=1479987027

第六步

安裝好discuz軟件,測試corosync的高可用

[root@node2 ~]# crm status
Every 1.0s: crm status                                          Thu Nov 24 21:33:34 2016
    
Last updated: Thu Nov 24 21:33:35 2016          Last change: Thu Nov 24 21:31:36 2016 by root via cibadmin on node1
Stack: corosync
Current DC: node1 (version 1.1.13-10.el7-44eb2dd) - partition with quorum
3 nodes and 5 resources configured
    
Online: [ node1 node2 node3 ]
    
 Resource Group: webservice
     webstore   (ocf::heartbeat:Filesystem):    Started node1
     webmysql   (ocf::heartbeat:Filesystem):    Started node1
     mariadb    (systemd:mariadb):Started node1
     webserver  (systemd:httpd):        Started node1
     webip(ocf::heartbeat:IPaddr):        Started node1

訪問網站

corosync.png

[root@node1 ~]# crm node standby    #把node1節點手動設置為不可用
    
[root@node1 ~]# crm status    #過段時候后,所有資源都轉移到了node2節點,此實驗成功
Every 1.0s: crm status                                          Thu Nov 24 21:35:18 2016
    
Last updated: Thu Nov 24 21:35:21 2016          Last change: Thu Nov 24 21:34:50 2016 by root via crm_attribute on node1
Stack: corosync
Current DC: node1 (version 1.1.13-10.el7-44eb2dd) - partition with quorum
3 nodes and 5 resources configured
    
Node node1: standby
Online: [ node2 node3 ]
    
 Resource Group: webservice
     webstore   (ocf::heartbeat:Filesystem):    Started node2
     webmysql   (ocf::heartbeat:Filesystem):    Started node2
     mariadb    (systemd:mariadb):Started node2
     webserver  (systemd:httpd):        Started node2
     webip(ocf::heartbeat:IPaddr):        Started node2

刷新網站后,依舊可以訪問

corosync.png

原創文章,作者:megedugao,如若轉載,請注明出處:http://www.www58058.com/60703

(0)
megedugaomegedugao
上一篇 2016-11-24
下一篇 2016-11-24

相關推薦

  • LAMP的編譯安裝

    一、編譯安裝amp: (1)系統環境:centos6,7 httpd依賴于apr和apr-util appache protable runtime (2)開發環境: Development Tools,Server Platform Development (3)各程序的版本: httpd:2.2,2.4 php:5.x mysql:5.1,5.5,5.6…

    Linux干貨 2016-10-17
  • N26-第二周作業-邢巖(2)

     馬哥門徒-N26-邢巖   我們接著說今天的分享,接著,我們來看看bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容好了。    1.bash的基礎特性之:命令的執行狀態結果      bash通過狀態返回值來輸出此結果:       成功:0 …

    Linux干貨 2017-02-10
  • Linux進程及管理(1)

    Linux進程及管理(1) 內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能 Process: 運行中的程序的一個副本; 存在生命周期Linux內核存儲進程信息的固定格式:task struct 多個任務的的task struct組件的鏈表:task list 進程創建: init 父子關系 進程:都由其父進程創建 fork(), cl…

    Linux干貨 2015-05-28
  • Linux基礎知識及常用命令

    pwd:printing working directory -顯示當前工作目錄            [root@edu tmp]# pwd          &nbs…

    Linux干貨 2016-09-15
  • iptables之froward

    先克隆一臺centos服務器添加虛擬網卡 同時兩個服務器配上host only的網卡 echo 1 > /proc/sys/net/ipv4/ip_forward打開網卡間轉發 有回包 但是沒有10.0.0.3還是沒有ping通原因是192.168.68.134 的網關指向了192.168.68.2 而不是192.168.68.144添加一條指向192…

    2017-11-12
  • iptables初探

    iptables 簡述 基礎知識 命令使用 簡述 iptables是什么?netfilter又是什么? iptables是位于用戶控件的一個防火墻規則控制管理工具。netfilter是位于內核中的真正的防火墻,由五個鉤子函數(hooks)而組成。 iptables的作用是什么? 用來添加,刪除,管理netfilter規則。 netfilter的作用是什么? …

    2016-05-31
欧美性久久久久