經過LVS實現WEB站點的mysql高可用

    在一個網站架構中 只要有服務器的存在就必需要在肯定架構的安全,在企業和網站中 數據庫的做用是相當重要的,所以對數據庫的兩個重要的操做就是備份和提高其性能php

備份有mysql自帶的mysqldump 在有優勢的同時也存在着缺點,就是讀寫的差別,因爲大多數網站的數據庫是讀取多於寫入,因此這裏作了一個讀取的從屬服務器的LVS對寫入html

數據庫的操做讓它去找主服務器 而後主從服務器作一個AB複製同步 在這裏還要在apache搭建一個論壇用來測試mysql

實驗環境:vmware 9.0 RHEL5.5linux

實驗所需軟件包:mysql-w-r.tar.gz Discuz_7.2_FULL_SC_UTF8.zipsql

爲避免干擾 實驗開始前關閉selinux功能 配置好IP地址和本地Yum源數據庫

實驗所需機器最少7臺apache

實驗的拓撲圖以下vim

image

  分別給三個用戶安裝三個論壇關聯三個數據庫每個用戶只對一個數據庫有操做權限 對別的數據庫沒有操做權限瀏覽器

APACHE服務器的配置安全

1 安裝httpd服務 php服務

yum –y install httpd php php-mysql

2 vim /etc/httpd/conf/httpd.conf

image 

3 開啓apache 服務

service httpd restart

4 這裏咱們不作DNS的配置只是在客戶機的hosts文件中手動輸入域名所對應的IP

image

這樣在瀏覽器中輸入域名就能夠正常訪問了 作完了apache準備部分再去作mysql 而後再去裝discuz關聯數據庫

在mysql主服務器A上設置

1 yum –y install mysql-server mysql

2 初始化mysql數據庫

service mysqld restart

3 由於在本機數據庫進行操做因此不須要輸入用戶名和密碼 在輸入命令的時候只須要輸入mysql就能夠進入數據庫

#mysql

mysql的數據庫文件存放在/var/lib/mysql目錄下

4 新建三個庫分別爲a,b,c

image

5 在a,b,c庫下分別新建三個表a,b,c

image

6 在三個表中插入輸入

mysql>use a;

image

這時再作mysql的主從服務器

在A服務器上須要作以下配置

1 vim /etc/my.cnf

image

server_id = 1

log-bin=binlog
log-bin-index=binlog.index

編輯完成以後重啓服務讓配置生效

2 GRANT replication slave ON *.* TO 'kyo'@'%' identified by '123';-------------主從複製時要用到的

GRANT all privileges ON a.* TO 'baidu'@'%' identified by '123';   -------------在安裝論壇時要設置的

GRANT all privileges ON b.* TO 'sina'@'%' identified by '456';----------------在安裝論壇時要設置的

GRANT all privileges ON c.* TO 'yahoo'@'%' identified by '789';---------------在安裝論壇時要設置的

3 mysql> flush privileges;

  #mysqldump -A -x > /tmp/full.sql 數據庫備份到/tmp下

4 #scp /tmp/full.sql root@slaveip:/tmp/    ----------這裏個人slaveip是192.168.1.101 因此IP寫192.168.1.101就能夠了

5 這時若是數據庫有寫操做要對數據庫加鎖

mysql> flush tables with read lock;

若是沒有寫操做能夠省掉這一步

6 mysql> show master status;  顯示主數據庫服務器的狀態

image

最後一步解鎖數據庫表

記住這個Position號碼和File名字 一會要用到

在BMain服務器中的操做

1 安裝mysql-server

yum –y install mysql-server

2 啓動服務

service mysqld restart

3 編輯配置文件

vim /etc/my.cnf

server_id = 2

relay_log = /var/lib/mysql/mysql-relay-bin
relay_log_index=/var/lib/mysql/mysql-relay-bin.index

image

4 重啓服務使配置生效

service mysqld restart

#mysql < /tmp/full.sql

5 進入mysql數據庫

mysql> change master to master_host='192.168.1.100', master_port=3306, master_user='kyo', master_password='123', master_log_file='binlog.000001',master_log_pos=366;------------------------------在這裏要注意的是master的IP地址和端口還有文件名和Position

mysql> start slave;--------------啓動slave

mysql> show slave status \G
      Slave_IO_Running: Yes
     Slave_SQL_Running: Yes

只要有這兩個模塊處於YES狀態就表示從屬服務器就成功了

這時咱們再去配置另外一個從屬服務器 此次要用另外一種方式

1 前面安裝和啓動方式都同BMain同樣 修改配置文件在server_id = 3便可

再從BMain中拷貝full.sql和mysql目錄下的master.info 須要說明的是master.info文件記錄着鏈接上述主服務器的配置信息

image

第三行就是position位置 因爲我插入刪除表操做使position位置發生變化 具體以本身實驗爲標準

2 scp root@192.168.1.101:/var/lib/mysql/master.info /var/lib/mysql/master.info

scp root@192.168.1.101:/tmp/full.sql /tmp/full.sql

因爲master.info文件不具備權限須要賦權

chown mysql.mysql /var/lib/mysql/master.info –R

#mysql < /tmp/full.sql

重啓服務後開啓slave

image

LVS

作完了mysql的主從服務再對兩個從屬服務器作一個負載均衡

在LVS上作以下配置

mount /dev/cdrom /mnt

#rpm -ivh /mnt/Cluster/ipvsadm-1.24-10.i386.rpm

若是要作mysql的負載均衡的話要知道它的端口號 3306

LVS#ipvsadm -A -t 192.168.1.200:3306 -s rr
LVS#ipvsadm -a -t 192.168.1.200:3306 -r 192.168.1.101 -g
LVS#ipvsadm -a -t 192.168.1.200:3306 -r 192.168.1.102 –g

LVS#ifconfig eth0:1 192.168.1.200  -----------作一個虛擬網卡VIP

在BMain中和BBak中分別作以下配置

#ifconfig lo:1 192.168.1.200 netmask 255.255.255.255 broadcast 192.168.1.255 up

ain#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
BMain#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

作好以後再來看LVS

 image

作好LVS以後就應該反過來開始測試

在apache上作以下操做

解壓mysql-w-r.tar.gz文件

tar fxzv mysql-w-r.tar.gz

拷貝文件到html目錄

在apache瀏覽器中輸入http://localhost

image

能夠看到頁面中有三個表 在html目錄中有幾個PHP文件 頁面中的超連接就是調用的文件 咱們經過用PHP代碼來實現讀寫分離

image

打開index.html能夠看到超連接所調用的PHP文件

image

打開mysql.php 編輯裏面配置文件讓建立數據庫和表和插入數據操做都在主數據庫服務器中進行

在主數據庫服務器開一個用戶名讓遠程操做

GRANT all privileges ON *.* TO 'aligatao'@'%' identified by '123';

編輯msql-c.php 和insert.php 只修改第一行就能夠

image

在兩臺輔助mysql上分別創建用戶讓以遠程登陸

GRANT all privileges ON *.* TO 'ali'@'%' identified by '123';

GRANT all privileges ON *.* TO 'ali'@'%' identified by '123';

編輯mysql-c.php文件

image

完成以後就能夠測試打開第一個選項就出來

image

看mysql主服務器的狀況

image

看到剛剛建立的數據庫my_db 這時咱們插入數據就插入到my_db這個數據庫中了

image

這個是主服務器中數據 在看看輔助服務器中數據

image

能夠看到從頁面輸入的值都顯示在了上面

image

看! LVS上面的數據走向 查詢一次就通過一次LVS分發

至此Mysql的高可用已經作完了 接下來再想本身安裝個discuz論壇實現CDN空間服務商的相似服務項目,三個虛擬主機對應三個域名安裝三個論壇 數據庫用已經建立的

1 解壓Discuz

APACHE#unzip Discuz_7.2_FULL_SC_UTF8.zip

APACHE#cp -r upload/* /var/www/html/baidu/

APACHE#cp -r upload/* /var/www/html/sina/

APACHE#cp -r upload/* /var/www/html/yahoo/

在客戶端瀏覽器輸入地址就能夠安裝

image

霸王條款 點擊我贊成一步一步開始安裝

image 

遇到這一步就要修改/var/www/html/baidu/裏的響應文件的權限

image

執行完成後就能夠繼續安裝

image

在填寫數據庫信息要注意上面的提醒----------

image

點擊下一步接着論壇就安裝成功了

image

建立discuz初始數據庫的過程

image

如此過程給yahoo和sina站點都安裝discuz就能夠實現實驗給的目的

下面還有不少表 截不出來了 不過大概能夠看到表是同樣的

Discuz成功關聯mysql mysql實現了高可用 實驗成功!

相關文章
相關標籤/搜索