プレビュータスク0604クラス+のクラスのノート

18.1クラスタ説明

  • よる機能は、2つのカテゴリに分類されています。高可用性と負荷分散

  • 高可用性クラスタは、マシンがダウンしているときにサービスを提供するためのサービスを提供し続け、一般的に二つのサーバ、仕事、冗長などの他の一つであり、冗長性を引き継ぎます

  • オープンソースソフトウェアの高可用性:ハートビート、keepalivedの

  • ロードバランシングクラスタは、サーバーがバックエンドを処理配布するユーザの要求に責任がある販売代理店として、サーバーを持っている必要があり、このクラスタで、販売代理店に加えて、サーバーサービスをユーザーに提供することで、サーバの数は、少なくとも2

  • オープンソースの負荷ソフトウェアLVSのバランスを取る、そこにkeepalivedの、haproxy、nginxの、商用F5、NetScalerの


はじめに18.2 keepalivedの

  • ここでは、centos6いくつかの問題があるので、実験結果に影響を与え、高可用性クラスタのハートビートを達成するためにkeepalivedの使用します

  • VRRP(仮想ルータ冗長Protocl)を通じて実現keepalivedの可用性。

  • この契約は、同じ機能ルータはマスタの役割とN(N> = 1)バックアップの役割が存在することになるグループを形成するよりも存在します。

  • マスターVRRPプロトコルは、バックアップマスターがVRRPに送られたパケットを受信しないとき、それがダウンしてマスターを想定し、それぞれのバックアップマルチキャストフォームにデータパケットを送信します。その後、各バックアップの優先度に応じて新しい母校になった人を決定する必要があります。

  • keepalivedのは、三つのモジュール、すなわちコア、チェックして、VRRPを持っています。コアモジュールは、ヘルスチェックを担当するモジュールをチェックし、メインプロセス、メンテナンスおよびロードを開始し、グローバルコンフィギュレーションファイルを解析するための責任、keepalivedのの中核である場合には、VRRP VRRPモジュールは、合意を達成することです。


keepalivedので18.3 / 18.4 / 18.5の高可用性クラスタ構成

図1に示すように、マスターのために準備二つのマシン130と132,130、132は、バックアップであります

2は、2機が設置されているkeepalivedの

[ルート@ arslinux-01〜]#yumをインストール-y keepalivedの
[ルート@ arslinux-02〜]#yumをインストール-y keepalivedの

図3に示すように、両方のマシンがnginxのをインストールする必要があり、以前に130にコンパイルされてインストールさ132は、yumをインストールする必要が


[ルート@ arslinux-02〜]#yumをインストール-y nginxの

4、メイン再編集上の/etc/keepalived/keepalived.conf

[ルート@ arslinux-01〜]#mvの/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[ルート@ arslinux-02〜]#VIM /etc/keepalived/keepalived.conf 
global_defs { 
notification_email { 
[email protected] 
} 
notification_email_from [email protected] 
SMTP_SERVER 127.0.0.1 
smtp_connect_timeout 30 
ROUTER_ID LVS_DEVEL 
} 
vrrp_script chk_nginx { 
スクリプト「の/ usr /local/sbin/check_ng.sh」
間隔3 
} 
VI_1 {vrrp_instance 
状態マスター
ens33インタフェース
51 virtual_router_id 
プライオリティ100 
advert_int 1 
認証{ 
AUTH_TYPEのPASS 
auth_pass aminglinux> COM 
} 
virtual_ipaddressを{ 
192.168.194.100 
} 
track_script { 
chk_nginx 
} 
}

参考リンク:http://note.youdao.com/noteshare?id=196f3a77c4d99a8c21286d50704690b9&sub=EEAC512A00D54B3B98BFCB6E0B67DE26


定義することはできないとの問題、電子メールのメールボックスを持っているnotification_email

定義することができない、メールでのメールボックス、問題notification_email_from

SMTP_SERVER 127.0.0.1

30 smtp_connect_timeout

ROUTER_ID LVS_DEVELを定義することはできません

断続的に通常の間隔を3秒3を検出するためのテストサービスをchk_nginx vrrp_scriptかどうか

VI_1 vrrp_instance関連する構成をマスター

そのバックアップがあるから、それがある場合の状態の役割は、マスターであります

ブロードキャストネットワークカードを送信するために使用されるインタフェース

virtual_router_idルーティングID

優先順位100重量

認証認証関連情報

AUTH_TYPE PASS認証タイプ、パスワードフォーム

auth_passパスワードは、文字列を定義するには

IPの合計からvirtual_ipaddressマスター、それは、VIP、ダウンする解決されたIPからの主よ、両方のホスト部194であります

以前にnginxのを確認しchk_nginx定義され、スクリプトをロードtrack_script


5、通常のスクリプトnginxのかどうかのチェックを編集

Vimの/usr/local/sbin/check_ng.sh#[arslinuxルート01〜@] 
#!/ binに/ bashのの
#時間変数、ログインするための
D = `日付--date今日+% Y%M%D_%をH:%のM:%S ' 
#数演算処理のnginx 
のn-PS -C = `nginxの--no-見出し| WC -l` 
#プロセスが0の場合、nginxのは、再びnginxの開始、および検出プロセスの数れる
#さらに場合この時点では起動しないnginxのことを示す、0されることはkeepalivedの終了する必要が
続い; - [EQ "0" $ N]のIF 
を開始/etc/init.d/nginx 
| -l WC N2 = `--no-PS -Cのnginxの見出しを` 
[$ N2 -eq "0 "] IF、次に
エコー" $ D nginxの下、ウィルkeepalivedのSTOP" >> /var/log/check_ng.log 
STOPがkeepalivedのsystemctl 
Fiの
Fiを提供して

、nginxのプロセスの数を計算するためにトイレ-lコマンドプロセスの数が0に等しい場合、nginxのサービスが起動しない、あなたはnginxのサービスを起動し、起動後のプロセス値を表示する必要がある、または0の場合| PS -C nginxの--no-見出しを実行します説明nginxのはまだ起動しない、あなたは、ログ、トラブルシューティングを容易にエラーの日付を記述する必要があります。keepalivedの停止した後、メインが停止しkeepalivedの、それは自動的に、マスタースレーブがスタートkeepalivedの持っている混乱、およびスプリットブレインにならないように、サービスから。

参考リンク:https://note.youdao.com/ynoteshare1/index.html?id=17b7d082afd8d31b4fd5c48b5f93bcc1&type=note

6、755 /usr/local/sbin/check_ng.shにパーミッションを変更

[ルート@のarslinux-01〜]#chmodの755 /usr/local/sbin/check_ng.sh

7、開始keepalivedの

[ルート@ arslinux-01〜]#はkeepalivedの開始systemctl 
[ルート@ arslinux-01〜]#psのの補助を| grepをkeepalivedの
根0.0 0.1 122980 1412 8138?SS 22:43 0:00は/ usr / sbinに/ keepalivedの-D 
ルート8139 0.0 0.3 133940 3328?S 22:43 0:00の/ usr / sbinに/ keepalivedの-D 
ルート8140 0.1 0.2 133880 2860?S 22:43 0:00の/ usr / sbinに/ keepalivedの-D 
ルート8174 0.0 0.0 112724 992 PTS / 0 R + 22:43 0:00のgrep --color =オートkeepalivedの

nginxのは、自動的にロードするかどうかを確認する8、

[ルート@のarslinux-01〜]#psのの補助| grepをするのnginxの
ルート7988 0.0 0.1 46052 1292?SS 21:48 0:00 nginxの:マスター・プロセスは/ usr / local / nginxの/ sbinに/ nginxの-c /usr/local/nginx/conf/nginx.conf 
誰も7989 0.0 0.3 48540 3932?S 21:48 0:00 nginxの:ワーカープロセス
誰も7990 0.0 0.3 48540 3932?S 21:48 0:00 nginxの:ワーカープロセスの
ルート8357 0.0 0.0 112724 988 PTS + 22:45 0:00のgrep --color =オートnginxの/ 0 R 
[ルート@ arslinux-01〜]#1 /etc/init.d/のnginxの停止
(systemctl経由)nginxの停止:[确定] 
[ルート@のarslinux-01〜]#psのの補助| grepをするのnginxの
ルート8395 0.0 0.0 112724 984 PTS / 0 S + 22:45 0:00 grepの--color =自動nginxの 
[ルート@ arslinux-01〜]#psのの補助| grepをnginxの
ルート0.0 0.1 46052 1296 8417?SS 22:45 0:00 nginxの:マスター・プロセスは/ usr / local / nginxの/ sbinに/ nginxの-c /usr/local/nginx/conf/nginx.conf 
0.0 0.3 48540 3932 8421誰?S 22:45 0:00 nginxの:ワーカープロセス
誰0.0 0.3 48540 3932 8422?S午前22時45午後12時nginxのワーカープロセス
/ 0 R + 22:46午後12時のgrep --color =オートnginxのルート8466の0.0 0.0 112724 988 PTS

9、HTTPS://blog.51cto.com/11530642/2096227

10、/ var / log / messagesにログ

11、VIPは、IPCONFIGで見ることができないだけで、IPアドで見ることができます

[ルート@ arslinux-01〜]#IPが追加
1:LOを:<ループバックを、UP、LOWER_UP> MTU 65536のqdisc NOQUEUE状態UNKNOWNグループのデフォルトを1000年QLEN 
リンク/ループバック00:00:00:00:00:00 BRD午前0時:00:00:00:00 
INET 127.0.0.1/8範囲のホストLO 
永遠preferred_lft永遠valid_lft 
INET6 :: 1/128範囲ホストは
永遠にpreferred_lft valid_lft永遠
2:ens33:<ブロードキャスト、マルチキャスト、UP、LOWER_UP> MTU 1500のqdisc pfifo_fast 1000年QLENグループのデフォルトをアップステート
リンク/エーテル00:0C:29:24:EA:F2 BRD FF:FF:FF:FF:FF:FF 
INET 192.168.194.130/24 BRD 192.168.194.255スコープグローバルnoprefixrouteのens33 
valid_lft永遠preferred_lft永遠に
INET 192.168.194.100/32スコープグローバルens33は
永遠に永遠にpreferred_lft valid_lft
INET 192.168.194.150/24 BRD 192.168.194.255の範囲グローバル二noprefixrouteのens33:0 
valid_lft永遠preferred_lft永遠
のinet6 FE80 :: C905:5e78:b916:41da / 64スコープリンクnoprefixroute 
永遠preferred_lft永遠valid_lft 
3:ens37:<ブロードキャスト、マルチキャスト、 UP、LOWER_UP> MTU 1500なqdisc状態UPグループ1000 QLENデフォルトpfifo_fast 
リンク/エーテル00:0C:29:24:EA:FC BRD FF:FF:FF:FF:FF:FF 
INET 192.168.100.1/24 BRDの192.168.100.255スコープグローバルnoprefixrouteのens37 
valid_lft永遠preferred_lft永遠
FE80 INET6 :: F41:9da7:d8e3:10BA / 64スコープリンクnoprefixroute 
preferred_lft永遠に永遠にvalid_lft

設定する前に12、メインのiptablesとgetenforceからオフになっているファイアウォールを確認してください

13、/etc/keepalived/keepalived.confから設定ファイルを編集

[ルート@ arslinux-02〜]#mvの/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

[ルート@のarslinux-02〜]#のVimの/etc/keepalived/keepalived.conf

global_defs {

{notification_email

[email protected]

}

notification_email_from [email protected]

SMTP_SERVER 127.0.0.1

30 smtp_connect_timeout

ROUTER_ID LVS_DEVEL

}

vrrp_script chk_nginx {

スクリプト「/usr/local/sbin/check_ng.sh」

インターバル3

}

vrrp_instance VI_1 {

状態のバックアップ

インタフェースens33

virtual_router_id 51

優先順位90

advert_int 1

認証{

AUTH_TYPE PASS

auth_pass aminglinux>コム

}

virtual_ipaddress {

192.168.194.100

}

track_script {

chk_nginx

}

}

参考リンク:https://note.youdao.com/ynoteshare1/index.html?id=b12b72e89f72aca6896e4f250f7b4ce2&type=note

バックアップとしての状態

プライマリと一貫性の両方virtual_router_id、VIP

100は、主優先90からメイン未満であります

14、nginxの編集をチェックし、通常のスクリプトか

Vimの/usr/local/sbin/check_ng.sh#[arslinuxルート02〜@] 
#!/ binに/ bashのの
#時間変数、ログインするための
D = `日付--date今日+% Y%M%D_%をH:%のM:%S ' 
#数演算処理のnginx 
のn-PS -C = `nginxの--no-見出し| WC -l` 
#プロセスが0の場合、nginxのは、再びnginxの開始、および検出プロセスの数れる
#さらに場合nginxのがkeepalivedの終了する必要があります。この時点で開始しませ示し、0で
、その後; - [EQ "0" $ N]のIF 
nginxの起動systemctl 
WC -l` | N2 = `--no-PS -Cのnginxの見出し
[$ N2 IF - EQ "0"];その後、
エコー"$ D nginxの下には、STOPをkeepalivedのだろう" >> /var/log/check_ng.log 
systemctl STOPはkeepalivedの
Fiの
Fiを提供して

nginxのはyumがインストールされている場合は、systemctl開始nginxのを開始するためにコマンドを使用することができます

参考リンク:http://note.youdao.com/noteshare?id=abf23beadd51b4ec2a510b5e395f9d46&sub=C046236E7A14453FADEF8DADDD81C840

755 /usr/local/sbin/check_ng.sh権限を変更するには15、

[ルート@のarslinux-02〜]#chmodの755 /usr/local/sbin/check_ng.sh

16、keepalivedのを開始

[ルート@ arslinux-02〜]#はkeepalivedの開始systemctl 
[ルート@ arslinux-02〜]#psのの補助を| grepをkeepalivedの
根0.0 0.1 122876 1412 7836?SS 23:14 0:00は/ usr / sbinに/ keepalivedの-D 
ルート7837 0.0 0.3 133836 3340?S 23:14 0:00の/ usr / sbinに/ keepalivedの-D 
ルート7838 0.0 0.2 133776 2872?S 23:14 0:00の/ usr / sbinに/ keepalivedの-D 
ルート7878 0.0 0.0 112724 992 PTS / 0 S + 23:14 0:00のgrep --color =オートkeepalivedの

から開始するかどうかの17、nginxのチェック

[ルート@のarslinux-02〜]#psのの補助| grepをするのnginxの
ルート7813 0.0 0.2 125004 2108?Ssの午前23時11午前0時nginxの:マスター・プロセスは/ usr / sbinに/ nginxの
nginxの0.0 0.3 125392 3148 7814?S夜11時11分午後12時nginxの:ワーカープロセスの
ルート7976 0.0 0.0 112724 984 PTS / 0 R +午後11時15分午後12時のgrep --color =オートnginxの

18、メインブラウザアクセス

1.png

nginxの中で定義されている今回の訪問では、デフォルトの仮想サーバーのホームです

2.png

19、/usr/share/nginx/html/index.html上のデフォルトのページから、デフォルトのページのバックアップ、バックアップを変更

[ルート@のarslinux-02〜]#猫/usr/share/nginx/html/index.html

バックアップ、バックアップ

ブラウザからアクセス20、

3.png

21、IPが表示ipから追加します

[root@arslinux-02 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:14:4f:d9 brd ff:ff:ff:ff:ff:ff
inet 192.168.194.132/24 brd 192.168.194.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::4c99:ed43:5757:e772/64 scope link noprefixroute
valid_lft forever preferred_lft forever

22、浏览器访问 vip 192.168.194.100,实际上就是 master,vip 在 master 上

4.png

23、测试高可用

测试1:关闭 主上 nginx,会重新启动,因为 keepalived

测试2:增加规则:iptables -I OUTPUT -p vrrp -j DROP,从上出现出现了 vip ,但 主上 vip 依然没有释放

5.png

6.png

访问 vip,依然是主上的默认虚拟服务器

测试3:停止主上的 keepalived,主上的 vip 被释放了

7.png

8.png

9.png

此时访问 vip 则是 从上的默认虚拟服务器

测试4:重启主上的 keepalived,访问 vip,马上回到了主上的默认虚拟服务器

10.png

24、mysql 也可以弄高可用,但是要确保两边数据一致


18.6 负载均衡集群介绍

  • 主流开源软件 LVS、keepalived、haproxy、nginx等

  • 其中LVS 属于4层(网络OSI 7层模型),nginx 属于7层,haproxy 既可以认为是4层,也可以当做7层使用

  • keepalived 的负载均衡功能其实就是 lvs

  • lvs 这种4层的负载均衡是可以分发除80外的其他端口通信的,比如 MySQL 的,而 nginx 仅仅支持 http,https,mail,haproxy 也支持MySQL这种

  • 相比较来说,LVS 这种4层的更稳定,能承受更多的请求,而 nginx 这种7层的更加灵活,能实现更多的个性化需求


18.7 LVS介绍

  • LVS 是由国人章文嵩开发

  • 流行度不亚于 apache 的 httpd,基于 TCP/IP 做的路由和转发,稳定性和效率很高

  • LVS 最新版本基于 Linux 内核2.6,有好多年不更新了

  • LVS 有三种常见的模式:NAT、DR、IP Tunnel

  • LVS 架构中有一个核心角色叫做分发器(Load balance),它用来分发用户的请求,还有诸多处理用户请求的服务器(Real Server,简称 rs)


LVS NAT模式(10台以下)

11.png

  • 这种模式借助 iptables 的 nat 表来实现

  • 用户的请求到分发器后,通过预设的 iptables 规则,把请求的数据包转发到后端的 rs 上去

  • rs 需要设定网关为分发器的内网 ip

  • 用户请求的数据包和返回给用户的数据包全部经过分发器,所以分发器成为瓶颈

  • 在 nat 模式中,只需要分发器有公网 ip 即可,所以比较节省公网 ip 资源


LVS IP Tunnel模式

12.png

  • 这种模式,需要有一个公共的 IP 配置在分发器和所有rs上,我们把它叫做 vip

  • 客户端请求的目标 IP 为 vip,分发器接收到请求数据包后,会对数据包做一个加工,会把目标 IP 改为 rs 的 IP,这样数据包就到了 rs 上

  • rs 接收数据包后,会还原原始数据包,这样目标 IP 为 vip,因为所有 rs 上配置了这个 vip,所以它会认为是它自己

  • 结果反馈给客户端

NAT 就是 iptables 转发,IP Tunnel 把模板 ip 做更改


LVS DR模式

1523371556386328.png

  • 这种模式,也需要有一个公共的 IP 配置在分发器和所有 rs 上,也就是 vip

  • 和IP Tunnel 不同的是,它会把数据包的 MAC 地址修改为 rs 的 MAC 地址

  • rs接收数据包后,会还原原始数据包,这样目标 IP 为 vip ,因为所有 rs 上配置了这个 vip,所以它会认为是它自己

  • 结果反馈给客户端


18.8 LVS调度算法

  • 轮询 Round-Robin  rr

  • 加权轮询 Weight Round-Robin wrr

  • 最小连接 Least-Connection lc

  • 加权最小连接 Weight Least-Connection wlc

  • 基于局部性的最小连接 Locality-Based Least Connections lblc

  • 带复制的基于局部性最小连接 Locality-Based Least Connections with Replication  lblcr

  • 目标地址散列调度 Destination Hashing dh

  • 源地址散列调度 Source Hashing  sh


18.9/18.10 LVS NAT模式搭建

准备工作

1、准备三台机器

分发器,简称 dir 192.168.194.130

rs1 192.168.194.132

rs2 192.168.194.133

2、给分发器添加一块网卡

ens37:192.168.174.100,本地 windows 上能 ping 通

14.png

15.png

16.png

3、三台机器上全部关闭 firewalld

4、三台机器安装 iptables-services,保存空规则

[root@arslinux-02 ~]# yum install -y iptables-services

[root@arslinux-02 ~]# systemctl start iptables

[root@arslinux-02 ~]# systemctl enable iptables

[root@arslinux-02 ~]# iptables -F

[root@arslinux-02 ~]# service iptables save

5、关闭selinux,编辑 /etc/selinux/config,状态改为 disable

6、将 rs1 和 rs2 的网关设置为分发器的 ip 地址 192.168.194.130


搭建工作

1、在 dir 上安装 ipvsadm

[root@arslinux-01 ~]# yum install -y ipvsadm

2、写脚本vim /usr/local/sbin/lvs_nat.sh

[root@arslinux-01 ~]# vim /usr/local/sbin/lvs_nat.sh
#! /bin/bash
# director 服务器上开启路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
# 关闭icmp的重定向
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
# 注意区分网卡名字,阿铭的两个网卡分别为ens33和ens37
echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens37/send_redirects
# director 设置nat防火墙
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.194.0/24  -j MASQUERADE
# director设置ipvsadm
IPVSADM='/usr/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 192.168.174.100:80 -s wlc -p 3
$IPVSADM -a -t 192.168.174.100:80 -r 192.168.194.132:80 -m -w 1
$IPVSADM -a -t 192.168.174.100:80 -r 192.168.194.133:80 -m -w 1

3、测试

rs1 上

[root@arslinux-02 ~]# curl localhost
backup,backup

rs2 上

[root@arslinux-02 ~]# curl localhost
backup2,backup2

4、ipvsadm的规则:

[root@arslinux-01 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.174.174:80 wlc persistent 3
-> 192.168.65.132:80            Masq    1      0          0
-> 192.168.65.133:80            Masq    1      0          1

5、可能连续几次访问该ip结果都是RS2,也许是缓存的原因

可以把lvs_nat.sh的IPVSADM规则第一条改为:轮询

$IPVSADM -A -t 192.168.174.100:80 -s rr

6、それは再SH

[ルート@のarslinux-01〜]#shをする/usr/local/sbin/lvs_nat.sh

7、カールしても、ネットワークIPの外に、結果を見て

アクセスは、RRを働いされている、非常に平均であります

実験は成功でした!



クラスノート

1、クラスタリングおよび分類

高可用性、負荷分散、分散

高可用性アーキテクチャを意味する2、

長いサービス利用可能性、安定性、ホットスタンバイを確認してください

3. keepalivedの原則

VRRPプロトコル仮想ルーティングプロトコル

作業は、プローブが正しく動作しているBC、問題A、の上に右に応じてB / Cから再選択します

https://blog.csdn.net/u013920085/article/details/21184143

図示4、LVS三つのモード

https://blog.51cto.com/jiekeyang/1839583

5、fullnatモード

https://ieevee.com/tech/2015/12/08/fullnat.html

これら四つの小さなLVSと使用シナリオの

https://www.jianshu.com/p/ce7ba9dfe103



おすすめ

転載: blog.51cto.com/11530642/2405243