天天看點

基于heartbeatV2版本的ha-gui工具對httpd做高可用叢集(2)

    書接上文http://wangfeng7399.blog.51cto.com/3518031/1397530,本文對MariaDB和LVS做高可用叢集

一、對MariaDB做高可用叢集

   1.環境規劃

   我們通過192.168.1.231對外提供MariaDB提供服務,兩個用戶端的ip位址分别為192.168.1.200和192.168.1.201,在192.168.1.204上提供了nfs服務為兩台資料庫提供共享存儲

   2.準備共享目錄

1

<code>/data </code><code>192.168</code><code>.</code><code>1.0</code><code>/</code><code>24</code><code>(rw,no_root_squash)</code>

   3.在建立使用者使其能夠uid相同  

2

<code>[root@php ~]# groupadd -r -g </code><code>306</code> <code>mysql</code>

<code>[root@php ~]# useradd -r -g mysql -u </code><code>306</code> <code>mysql</code>

   4.資料庫初始化

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<code>[root@node1 mysql]# groupadd -r -g </code><code>306</code> <code>mysql</code>

<code>[root@node1 mysql]# useradd -r -g mysql -u </code><code>306</code> <code>mysql</code>

<code>[root@node1 ~]# mount -t nfs </code><code>192.168</code><code>.</code><code>1.202</code><code>:/data /mydata</code>

<code>[root@node1 ~]# mkdir /mydata/{data,log}</code>

<code>[root@node1 mysql]# chown mysql.mysql /mydata/ -R</code>

<code>[root@node1 ~]# tar xf mariadb-</code><code>10.0</code><code>.</code><code>10</code><code>-linux-x86_64.tar.gz -C /usr/local/</code>

<code>[root@node1 ~]# cd /usr/local/</code>

<code>[root@node1 local]# ln -s mariadb-</code><code>10.0</code><code>.</code><code>10</code><code>-linux-x86_64 mysql</code>

<code>[root@node1 local]# cd mysql/</code>

<code>[root@node1 mysql]# chown mysql.root * -R</code>

<code>[root@node1 mysql]# cp support-files/my-large.cnf /etc/my.cnf</code>

<code>并修改配置檔案</code>

<code>thread_concurrency = </code><code>4</code>

<code>datadir=/mydata/data</code>

<code>log-bin=/mydata/logs/mysql-bin</code>

<code>innodb_file_per_table = ON</code>

<code>[root@node1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld</code>

<code>[root@node1 mysql]# chmod +x /etc/init.d/mysqld</code>

<code>初始化資料庫</code>

<code>[root@node1 mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data/</code>

    切記:現在就不需要在節點2上初始化資料了,節點2上的配置檔案要跟節點1上保持一緻

   5.配置權限

<code>MariaDB[none]&gt; grant all on *.* to </code><code>'wangfeng7399'</code><code>@</code><code>'192.168.1.231'</code> <code>identified by </code><code>'wangfeng7399'</code><code>;</code>

<code>MariaDB[none]&gt; flush privileges;</code>

   6.配置叢集

     添加一個mariadbservice的組,用來存放關于mariadb定義的資源

<a href="http://s3.51cto.com/wyfs02/M00/24/8E/wKioL1NSX5KBGNHBAAHyrlDNTRs542.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/24/8E/wKiom1NSX7vRYLw7AALiRhhUsB8506.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/24/8E/wKioL1NSX5LA9TpbAAKooKZc2wc965.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/24/8E/wKiom1NSX7yT7u8pAAJcAHraRxM448.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/24/8E/wKioL1NSX5Ohfc53AALor73G_Fk602.jpg" target="_blank"></a>

   7測試

   先建立一個資料庫

<a href="http://s3.51cto.com/wyfs02/M01/24/8E/wKiom1NSYCLgIHBFAABTsshLhpo860.jpg" target="_blank"></a>

   此處我們将node2節點關掉

<a href="http://s3.51cto.com/wyfs02/M00/24/8E/wKioL1NSX_nik4kDAAJ0Ye3Zhro668.jpg" target="_blank"></a>

   在node1上登陸檢視

<a href="http://s3.51cto.com/wyfs02/M02/24/8E/wKiom1NSYCLCgbshAAMi7hzc0Gg215.jpg" target="_blank"></a>

   也可以看到我們建立的資料庫

二、對LVS做高可用叢集

我們通過192.168.1.232對外提供LVS提供服務,兩台DS的位址分别為192.168.1.200和192.168.1.201,兩個RealServer的ip位址分别為192.168.1.204和192.168.1.202

   2.在RealServer上配置LVS的服務,兩台的配置方法相同

<code>[root@php ~]# echo </code><code>1</code> <code>&gt; /proc/sys/net/ipv4/conf/all/arp_ignore</code>

<code>[root@php ~]# echo </code><code>1</code> <code>&gt; /proc/sys/net/ipv4/conf/eth0/arp_ignore</code>

<code>[root@php ~]# echo </code><code>2</code> <code>&gt; /proc/sys/net/ipv4/conf/eth0/arp_announce</code>

<code>[root@php ~]# echo </code><code>2</code> <code>&gt; /proc/sys/net/ipv4/conf/all/arp_announce</code>

<code>[root@php ~]# ifconfig lo:</code><code>0</code> <code>192.168</code><code>.</code><code>1.232</code> <code>netmask </code><code>255.255</code><code>.</code><code>255.255</code> <code>broadcast </code><code>192.168</code><code>.</code><code>1.232</code> <code>up</code>

<code>[root@php ~]# route add -host </code><code>192.168</code><code>.</code><code>1.232</code> <code>lo:</code><code>0</code>

<code>啟動httpd服務</code>

<code>[root@php ~]# service httpd start</code>

   3.在兩台DS上安裝基于lvs的rpm包,如果不安裝官方給的文檔,要自己書寫配置文檔,有點麻煩,ldirectord還會檢測RealServer的健康狀态

<code>[root@node1 ha]#  yum install -y heartbeat-ldirectord-</code><code>2.1</code><code>.</code><code>4</code><code>-</code><code>12</code><code>.el6.x86_64.rpm</code>

<code>最好是通過yum安裝,這樣可以解決依賴關系</code>

<code>chkconfig ldirectord off</code>

<code>關閉開機自啟動</code>

   4.準備配置檔案

<code>[root@node1 ha]# cp /usr/share/doc/heartbeat-ldirectord-</code><code>2.1</code><code>.</code><code>4</code><code>/ldirectord.cf /etc/ha.d/</code>

   5.修改配置檔案

<code>checktimeout=</code><code>3</code>  <code>檢查逾時時間</code>

<code>checkinterval=</code><code>1</code> <code>每個多長時間檢測一次心跳</code>

<code>fallback=</code><code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>80</code> <code>如果都失敗了,會轉移到被本機的web服務上</code>

<code>autoreload=yes 配置檔案會不會自動裝載</code>

<code>logfile=</code><code>"/var/log/ldirectord.log"</code> <code>日志檔案</code>

<code>#logfile=</code><code>"local0"</code> <code>或者使用syslog</code>

<code>#emailalert=</code><code>"[email protected]"</code>

<code>#emailalertfreq=</code><code>3600</code>

<code>#emailalertstatus=all</code>

<code>quiescent=yes 是否使用靜默模式</code>

<code>virtual=</code><code>192.168</code><code>.</code><code>1.232</code><code>:</code><code>80</code> <code>定義VIP與端口</code>

<code>        </code><code>real=</code><code>192.168</code><code>.</code><code>1.204</code><code>:</code><code>80</code> <code>gate RealServer的ip位址 gate表示DR</code>

<code>        </code><code>real=</code><code>192.168</code><code>.</code><code>1.202</code><code>:</code><code>80</code> <code>gate</code>

<code>        </code><code>fallback=</code><code>127.0</code><code>.</code><code>0.1</code><code>:</code><code>80</code> <code>gate 如果所有的檢查失敗,使用的頁面</code>

<code>        </code><code>service=http 基于那種方式做監控檢查</code>

<code>        </code><code>request=</code><code>".health.html"</code> <code>監控檢查的檔案</code>

<code>        </code><code>receive=</code><code>"wangfeng7399"</code> <code>檢查的内容</code>

<code>        </code><code>scheduler=rr 排程算法</code>

<code>        </code><code>#persistent=</code><code>600</code> <code>定義持久連接配接時間</code>

<code>        </code><code>netmask=</code><code>255.255</code><code>.</code><code>255.255</code> <code>定義子網路遮罩</code>

       說明:定義時,隻能virtual頂個寫,其餘的都要空一個制表符,要不會出現文法錯誤    

   6.在各Real Server上添加.health.html内容為wangfeng7399

   7.在DS上準備一個錯誤頁面,内容為“維護時間”,并啟動web服務

   8.配置服務

<a href="http://s3.51cto.com/wyfs02/M00/24/7B/wKioL1NQHmjg0iXfAAIuVJR7SOI180.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/24/7C/wKiom1NQHqPhZumuAALyIEtX1aI068.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/24/7B/wKioL1NQHpbyV50EAALlsQypD5g507.jpg" target="_blank"></a>

   9.測試

     通過ipvsadm檢視

<a href="http://s3.51cto.com/wyfs02/M00/24/7C/wKiom1NQHsCRS_gXAAFHrOzGQQc882.jpg" target="_blank"></a>

   通過網頁檢視

<a href="http://s3.51cto.com/wyfs02/M02/24/7B/wKioL1NQHpbAPFEiAADq0YWuDLo219.jpg" target="_blank"></a>

   我們将web1關掉,依次來模拟一台Real Server 壞掉

<a href="http://s3.51cto.com/wyfs02/M01/24/7C/wKiom1NQHsCj17KEAAESgIP63g4873.jpg" target="_blank"></a>

 我們将兩台伺服器都關掉

<a href="http://s3.51cto.com/wyfs02/M00/24/7C/wKiom1NQH-7AJGyEAAF1yvTrPVo738.jpg" target="_blank"></a>

   通過web檢視,為我們在DS上定義的頁面

<a href="http://s3.51cto.com/wyfs02/M00/24/7B/wKioL1NQHpeQRyfBAADk9Pzmy0k216.jpg" target="_blank"></a>

   我們啟動其中任何一台,在檢視

<a href="http://s3.51cto.com/wyfs02/M02/24/7B/wKioL1NQIDyTL9kvAAEu74dp-IQ922.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/24/7C/wKiom1NQIGXj7kowAADnzRLHB9Q484.jpg" target="_blank"></a>

   都不會再看到我們定義的維護頁面

   大功告成,由于本人水準有限,可能會有錯誤,請各位大神批評指正

本文轉自wangfeng7399 51CTO部落格,原文連結:http://blog.51cto.com/wangfeng7399/1398676,如需轉載請自行聯系原作者