1. 程式人生 > >LVS+KEEPALIVED+MYSQL單點寫入讀負載均衡主主同步高可用方案

LVS+KEEPALIVED+MYSQL單點寫入讀負載均衡主主同步高可用方案

LVS+KEEPALIVED+MYSQL

單點寫入讀負載均衡主主同步高可用方案安裝教程

一、         安裝環境

Ø  軟體版本

CENTOS 6.5

KEEPALIVED 1.2.12 | 下載

LVS 1.2.6 | 下載

MYSQL 5.6.17(社群版) |  下載

Ø  硬體環境

兩臺伺服器, IP分別為:192.168.214.11(主機名:MYSQL-1) / 192.168.214.12(主機名MYSQL-2)

寫VIP(單點): 192.168.214.13

讀VIP(負載均衡): 192.168.214.14

二、         安裝流程

1.      OS
安裝與配置

最小化安裝(安裝時選擇Minimal)CENTOS後,分別設定兩臺機器的IP與主機名

Ø  修改/etc/sysconfig/network檔案

1
2
3

NETWORKING=yes
HOSTNAME=
MYSQL-1#主機名
GATEWAY=192.168.0.1#閘道器

Ø  修改/etc/sysconfig/network-scripts/ifcfg-eth0檔案

1
2
3
4
5
6
7
8
9

DEVICE=eth0
HWADDR=
00:0C:29:56:8F:AD
TYPE=Ethernet
UUID=ba48a4c0-f33d-4e05-98bd-248b01691c20
ONBOOT=

yes
NM_CONTROLLED=yes
BOOTPROTO=
static
IPADDR=
192.168.0.231#本機IP
NETMASK=255.255.255.0

Ø  修改/etc/resolv.conf檔案(設定DNS)

1
2

nameserver 202.103.24.68 #DNS伺服器地址search localdomain

Ø  修改/etc/hosts檔案,將圈出來的部分改為自己的主機名

Ø  重啟網絡卡&檢視當前主機名是否修改

1
2

[[email protected]1 ~]# service network restart
[[email protected]

1 ~]# hostname

如果未修改成功,重啟系統。

* 如果發現LINUX SSH連線緩慢,在server上/etc/ssh/sshd_config檔案中加入UseDNS=no。然後/etc/init.d/sshd restart重啟sshd程序使配置生效

2.      MYSQL安裝與配置

Ø  安裝依賴

123

[[email protected]YSQL-1 ~]# yum -y install wget gcc gcc-c++ ncurses ncurses-devel openssl openssl-devel libtool* libaio
.......
省略安裝過程列印日誌
Complete!   <--
安裝成功

Ø  檢查MySQL及相關RPM包,是否安裝,如果有安裝,則移除

1
2
3

[[email protected] ~]# rpm -qa | grep -i mysql
mysql-libs-5.1.71-1.el6.x86_64     <--說明預裝了依賴庫

[[email protected] ~]
# yum -y remove mysql-libs*

Ø  建立linux使用者mysql

1
2
3
4
5
6

[[email protected]L-1 ~]# useradd mysql
[[email protected]QL-1 ~]
# passwd mysql
更改使用者 mysql 的密碼新的密碼:重新輸入新的密碼:
passwd
所有的身份驗證令牌已經成功更新。

Ø  將mysql使用者加入sudoers組(因為安裝MYSQL需要ROOT許可權)

1
2
3
4
5
6
7

[[email protected]-1 ~]# chmod u+w /etc/sudoers     <--給與檔案可修改許可權[[email protected]-1 ~]# vi /etc/sudoers
......
root    ALL=(ALL)   ALL    <--
找出此行mysql    ALL=(ALL)   ALL   <--新增到這裡. :wq儲存退出
......
[[email protected]
L-1 ~]# chmod u-w /etc/sudoers     <--撤銷修改許可權

Ø  將下載完的mysql包上傳到伺服器中,執行以下命令安裝

12

3

4

5

[[email protected]SQL-1 ~]# su mysql     <--切換使用者[[email protected]L-1 ~]$ tar -xvf MySQL-5.6.17-1.linux_glibc2.5.x86_64.rpm-bundle.tar     <--解壓縮[[email protected]L-1 ~]$ sudo rpm -ivh MySQL-server-5.6.17-1.linux_glibc2.5.x86_64.rpm
[[email protected]QL-1 ~]
$ sudo rpm -ivh MySQL-devel-5.6.17-1.linux_glibc2.5.x86_64.rpm
[[email protected]-1 ~]$ sudo rpm -ivh MySQL-client-5.6.17-1.linux_glibc2.5.x86_64.rpm

Ø  初始化MYSQL

1
2


3

4

[[email protected]L-1 ~]$ sudo cp /usr/share/mysql/my-default.cnf /etc/my.cnf
[[email protected]QL-1 ~]$ service mysql start  <--
啟動MYSQL
Starting MySQL. SUCCESS!
[[email protected]
-1 ~]$ sudo cat /root/.mysql_secret  <--檢視MYSQL初始密碼

# The random password set for the root user at Tue Apr  8 22:20:49 2014 (local time): 
T_M57CrE5vM8WfEb(初始密碼)[[email protected]-1 ~]$ /usr/bin/mysql_secure_installation  <--初始化MYSQL

Ø  設定開機自動啟動

1
2

[[email protected]L-1 ~]$ sudo chkconfig mysql on
[sudo] password 
for mysql:

Ø  修改MYSQL預設字符集為UTF-8

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

[[email protected]SQL-1 ~]$ sudo vi /etc/my.cnf
......
[client]
default-character-
set=utf8
[mysqld]
character_set_server=utf8
character_set_client=utf8
collation-server=utf8_general_ci
init_connect=
'SET NAMES utf8'
#(注意linuxmysql安裝完後是預設:表名區分大小寫,列名不區分大小寫; 0:區分大小寫,1:不區分大小寫)  
lower_case_table_names=
1#(設定最大連線數,預設為 151MySQL伺服器允許的最大連線數16384; )  
max_connections=
1000
[mysql]
default-character-
set=utf8
......
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES  <-- 
此行刪除否則無法啟動
[[email protected]
~]$ service mysql restart

Ø  檢查字符集是否正確

1
2
3
4

[[email protected]1 ~]$ mysql -uroot -p
Enter password:
mysql>
show variables like '%collation%';
mysql>
show variables like '%char%';

3.      MYSQL主主複製配置

Ø  關閉防火牆,否則兩臺資料庫無法連線

1

[[email protected]1 ~]# service iptables stop

Ø  My.cnf配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

[[email protected] ~]$ sudo vi /etc/my.cnf
......
[MySQLd]   <--
在該節點下增加以下內容

skip-name-resolve  #禁用DNS解析,解決遠端連線很慢的問題
log-bin=mysql-bin
server-id=1   
#兩臺機器server-id不能相同
auto_increment_increment=2   
#自增長每次增加2
auto_increment_offset=1   #自增長從1開始另外一臺設定為
2
#
兩項保證兩臺主機中的自增長ID不會產生重複一臺為奇數一臺為偶數
#其他設定
#binlog-do-db=mydb   #
需要複製的資料庫名,如果複製多個數據庫,重複設定這個選項即可
#binlog-ignore-db=nonedb   #
不需要複製的資料庫苦命,如果複製多個數據庫,重複設定這個選項即可
#replicate-do-db=mysql   #
需要複製的資料庫名,如果複製多個數據庫,重複設定這個選項即可
#replicate-ignore-db=mysql   #
不需要複製的資料庫苦命,如果複製多個數據庫,重複設定這個選項即可
#log-slave-updates   #
啟用從庫日誌,這樣可以進行鏈式複製
#slave-skip-errors=all  #
不管發生什麼錯誤,映象處理工作也繼續進行......

[[email protected] ~]$ service mysql restart;

Ø  建立資料庫使用者並授權

1
2
3

mysql> createuser sartner identifiedby'123';
mysql> 
grantallprivilegeson *.* touser sartner;
mysql> 
flush privileges;

Ø  資料複製配置

1
2

mysql> grant replication slave on *.* to'sartner'@'%'identifiedby'123456';
mysql> show master status;

 

記錄下File Position, 在另一臺資料庫([email protected])中將此資料庫設為主資料庫

1

mysql> change master to master_host='192.168.214.11',master_user='sartner',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=120;

同樣在另一臺計算機中按照次步驟執行,設定成互為主從(可以相互複製)

設定完畢後啟動slave 並檢視slave狀態

1
2

mysql> start slave;
mysql> show slave status\G;

4.      LVS+KEEPALIVED安裝與配置

使用ROOT安裝

Ø  安裝LVS

12

[[email protected] ~]# yum -y install kernel-devel ipvsadm
[[email protected] ~]# ln -sv /usr/src/kernels/2.6.32-431.11.2.el6-x86_64/ /usr/src/linux   <--請自行修改kernels版本號

Ø  安裝keepalived

1
2
3
4
5
6
7
8
9
10
11
12

[[email protected]1 ~]# wget http://keepalived.org/software/keepalived-1.2.12.tar.gz
[[email protected]1 ~]
# tar  zxvf  keepalived-1.2.12.tar.gz
[[email protected]1 ~]
# cd keepalived-1.2.12
[[email protected]1 ~]
# ./configure  --prefix=/usr/local/keepalived
[[email protected]1 ~]
# make
[[email protected]1 ~]
# make  install
[[email protected]1 ~]
# cp /usr/local/keepalived/sbin/keepalived  /usr/sbin/
[[email protected]1 ~]
# cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/
[[email protected]1 ~]
# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/init.d/
[[email protected]1 ~]# mkdir /etc/keepalived/

[[email protected]1 ~]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
[[email protected]1 ~]
# cp /usr/local/keepalived/sbin/keepalived /etc/keepalived/
[[email protected]1 ~]# chkconfig keepalived on

Ø  Keepalived配置/etc/keepalived/keepalived.conf(兩臺伺服器不同之處已用紅色標出並註明)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70

global_defs {
    router_id LVS1
}
vrrp_sync_group test {
    group {
        loadbalance
    }
}
vrrp_instance loadbalance {
    state 
MASTER#主機(192.168.214.11)設定為MASTER,備機(192.168.214.12)設定為BACKUP
    interface eth0
    lvs_sync_daemon_inteface eth0
    virtual_router_id 51
    priority 
180#主機(192.168.214.11)設定為180,備機(192.168.214.12)設定為150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.214.13
#VIP

        192.168.214.14
#VIP
    }
}

#VIP配置(主備)virtual_server 192.168.214.13 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 20
    protocol TCP
    sorry_server 192.168.214.12 3306   
#
    real_server 192.168.214.11 3306 {   #        weight 3
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }
}

#VIP配置(負載均衡)
virtual_server 192.168.214.14 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
     
# persistence_timeout 20
    protocol TCP
    real_server 192.168.214.11 3306 {
        weight 3
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }
    real_server 192.168.214.12 3306 {
        weight 3
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }
}

Ø  realserver指令碼/etc/rc.d/init.d/realserver.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

#!/bin/bash
# description: Config realserver lo and apply noarp
SNS_VIP=192.168.214.13

SNS_VIP2=
192.168.214.14
/etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
ifconfig lo:1 $SNS_VIP2 netmask 255.255.255.255 broadcast $SNS_VIP2
/sbin/route add -host $SNS_VIP dev lo:0
/sbin/route add -host $SNS_VIP2 dev lo:1
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
ifconfig lo:1 down
route del $SNS_VIP >/dev/null 2>&1
route del $SNS_VIP2 >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;; 
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0

Ø  分配可執行許可權

1
2

[[email protected]1 ~]# chmod 755 /etc/rc.d/init.d/realserver.sh
[[email protected]1 ~]# chmod 755 /etc/rc.d/init.d/functions

Ø  啟動realserver以及keepalived

1
2

[[email protected]1 ~]# /etc/rc.d/init.d/realserver.sh start
[[email protected]1 ~]# /etc/keepalived/keepalived start

Ø  檢視keepalived日誌

1

[[email protected]1 ~]# cat /var/log/messages

看到MYSQL-1為主,MYSQL-2為備則成功

三、            參考資料

MYSQL高可用探究()Lvs+Keepalived+Mysql單點寫入讀負載均衡主主同步高可用方案(本安裝教程基於此方案)

Centos6.0系統lvs+keepalived+mysql實現mysql資料庫熱備主主複製

MYSQL主主(雙主)複製

嫌排版太爛可以下載PDF版本

相關推薦

LVS+KEEPALIVED+MYSQL寫入負載均衡同步可用方案

LVS+KEEPALIVED+MYSQL 單點寫入讀負載均衡主主同步高可用方案安裝教程 一、         安裝環境 Ø  軟體版本 CENTOS 6.5 KEEPALIVED 1.2.12 | 下載 LVS 1.2.6 | 下載 MYSQL 5.6.17(社群版) |

LVS+KeepAlived搭建雙機熱備負載均衡

從下載內容包中找到ipvsadm-1.24.tar.gz,執行如下命令(執行命令出錯的說明編譯環境存在問題,請更新下載GCC) #tar -zxvf keepalived-1.1.15.tar.gz #cd keepalived-1.1.15 #./configure --prefix=/usr/local

LVS實現負載均衡及keepalive實現可用

一.叢集(cluster)以及型別;       當後端伺服器承受不住訪問的壓力,提高伺服器效能的解決方案會極大增加成本時,人們提出了橫向擴充套件的解決方案。增加一臺或幾臺伺服器,提供相同的服務,通過前段分發器將訪問量均勻的分配到後臺伺服器上。這種多臺伺服器組成的陣列集合就叫

負載均衡,分散式,可用,容錯的區別

叢集(Cluster) 叢集的概念是和單臺伺服器相對應的,簡單來說叢集就是部署多臺伺服器協同完成一項工作。 1,負載均衡(Load Balance)叢集: 負責均衡伺服器根據負載均衡演算法(輪詢,隨機,雜湊,權重等)來分發請求到不同的主伺服器。  每個主伺服器都是等價的

Lvs+Keepalived+MySQL Cluster架設可用負載均衡Mysql叢集

一、前言 MySQL Cluster 是MySQL適合於分散式計算環境的高實用、高冗餘版本。它採用了NDB Cluster儲存引擎,允許在1個Cluster中執行多個MySQL伺服器。在MyQL5.0 及以上的二進位制版本中、以及與最新的Linux版本相容的RPM中提供了該儲存引擎。MySQ

mysql+mycat搭建穩定可用集群,負載均衡備復制,寫分離

root用戶 架構 .bat 出現 內存 ace 權威指南 上層 復制 主要思路 測試環境 實現mysql主備復制 配置A主mysql 配置B備mysql 驗證同步配置結果 驗證是否同步 關閉B備mysql的同步,驗證讀寫分離

LVS+Keepalived+Mysql+備數據庫架構

pos extra top k with 定義 compiler probe http 不一致 這是一個坑...磨了不少時間。見證自己功力有待提升。。。 架構圖 數據庫 1.安裝數據庫 這塊不難, 直接引用: mysql安裝 2.數據庫主備 這塊不難

LVS+Keepalived+Mysql+數據庫架構[2臺]

tp服務器 tar syn ica ddr 定義 _id ali onf 架構圖 安裝步驟省略。 158.140 keepalived.conf ! Configuration File for keepalived global_defs {

mysql+mycat搭建穩定可用叢集,負載均衡備複製,寫分離

資料庫效能優化普遍採用叢集方式,oracle叢集軟硬體投入昂貴,今天花了一天時間搭建基於mysql的叢集環境。 主要思路 簡單說,實現mysql主備複製-->利用mycat實現負載均衡。 比較了常用的讀寫分離方式,推薦mycat,社群活躍,效能穩定。 測試環境 MYSQL版

使用docker搭建併發網站架構實踐7--Mysql主從同步+寫分離+負載均衡

6. Mysql主從同步+讀寫分離+讀負載均衡 目標: 搭建mysql一主兩從同步 搭建從mysql讀負載均衡 結合web工程實現mysql讀寫分離 整體示意圖: 如圖所示: 192.168.238.129:負載均衡伺服器 192.168.238.128:

keepalived+nginx雙機熱備+負載均衡

ethernet auth 超時任務 collision boot .rpm ocl bnl host keepalived+nginx雙機熱備+負載均衡最近因業務擴展,需要將當前的apache 轉為nginx(web), 再在web前端放置nginx(負載均衡)。同時結合

Nginx+keepalived做雙機熱備,實現負載均衡模式)

nginx keepalive Keepalived: 簡介:Keepalived的作用是檢測服務器的狀態,如果有一臺web服務器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常後Keepali

windows NLB實現MSSQL寫分離--從數據庫集群負載均衡

sql AC 安裝數據庫 track esp 清華 創建 schema brush 主從模式,幾乎大部分出名的數據庫都支持的一種集群模式。 當Web站點的訪問量上去之後,很多站點,選擇讀寫分離,減輕主數據庫的的壓力。當然,一主多從也可以作用多個功能,比如備份。這裏主要演示如

Mysql+Keepalived熱備可用操作步驟詳細解析

eve 腳本 server設置 not find 實驗 本地ip help oracle 查看 mysql+keepalived雙主熱備高可用的介紹: 我們通常說的雙機熱備是指兩臺機器都在運行,但並不是兩臺機器都同時在提供服務。當提供服務的一臺出現故障的時候,另外一臺會馬上

Mysql+Keepalived(vrrp_script)雙熱備可用

我們通常說的雙機熱備是指兩臺機器都在執行,但並不是兩臺機器都同時在提供服務。當提供服務的一臺出現故障的時候,另外一臺會馬上自動接管並且提供服務,而且切換的時間非常短。MySQL雙主複製,即互為Master-Slave(只有一個Master提供寫操作),可以實現資料庫伺服器的熱備,但是一個Master

(四)mysql主從基礎上的負載均衡--haproxy搭建

(一)什麼是mysql負載均衡 通過兩個圖來對比 未設定負載均衡: 設定之後,能把請求按一定策略分配到相應的mysql伺服器上,提高系統穩定性,在效能方面也有大幅度提升 (二)負載均衡HaProxy       &

MySQL可用方案 MHA之四 keepalived同步複製

    [[email protected] ~]# cat /etc/mysql_mha/app1.cnf [server default]manager_log=/data/mysql_mha/app1-manager.logmanager_workdir=/data/m

linux 實現lvs-dr在不同網段的負載均衡排程

一、前言: 當一組伺服器在高速的區域網或廣域網中相互連線,其前端部署了一個負責負載排程的排程器(director)的服務系統,排程器能將網路請求無縫銜接排程到真實的伺服器上(real server)上,客戶訪問集群系統提供的網路服務就像訪問一臺高效能,高可用的伺服器一樣,集

shiro+cas+spring-data-redis實現多系統登入和分散式專案的session同步

CSDN開通很久了,但是一直沒寫東西,2018年了,這是我CSDN的第一篇文章,歡迎各位評論探討和指點。   一、背景: 現在公司的業務系統要做多臺分散式叢集,由於是web專案,要做session同步,想到的方案是用目前火熱的redis資料庫儲存session,還有業

MySQL5.7 利用keepalived來實現mysql可用方案的詳細過程

伺服器準備Keepalived:192.168.13.15Keepalived:192.168.13.16Mysql-m1: 192.168.13.15Mysql-m2: 192.168.13.161,在m1、m2上準備mysql5.7環境2,在m1上部署keepalived