クラスタLVS --- keepalivedの高可用性クラスタのバランスをとるエンタープライズクラスの負荷、LVS(IPVS)+ keepalivedの+からhttpd、LVS(IPVS)+ keepalivedの+ vsftpdの

一、keepalivedの

背景:必要とする、すべてのWebサーバがアクセスでき我々は、複数のウェブバックエンドサーバーをスケジュールするスケジューラ前であるが、スケジューラが破損した場合、スケジューラは、仕事をしていない場合もバックアップスケジューラしたがって、スケジューラの複数あるkeepalivedの可用性クラスタを、(メインも用意)リードし、Webサービスを使用すると、通常の作業スケジューラを確保keepalivedの同時にダウンし、すべての可能性スケジューラは小さいです。

目的:個々のノードがダウンしたときに、ネットワーク全体が中断なく実行できることを確認するために、

1、keepalivedの定義

keepalivedのは、 高可用性クラスタを確保するために、クラスタ管理ソフトウェアおよびサービス(単一障害点を防ぎます)それはすることができ、個々のノードがダウンしたときに、ネットワーク全体が中断されることなく実行できることを確認する時、そう、keepalivedの片手LVS構成管理 それは機能するだけでなく、持っています ヘルスチェックの下LVSノード また、一方の関数、 ネットワークサービスシステムの高可用性を実現

  • HA(ハイAvalilability、HA)、実際には、二つの異なる意味:広義には、システム全体の高可用性を指し、狭義には、冗長性と上のホストです。
  • keepalivedの元々keepalivedのは、クラスタノード検出の状態を達成することができため、LVS用に設計されており、IPVSは、ロードバランシングを実現することができます。 keepalivedのIPVSが簡単にロード・バランシング・システムを構築することができ、サードパーティのモジュールの助け。 神話:keepalivedのは、一緒に働くことができるとIPVS、それが一般的に考えられているkeepalivedの負荷分散ソフトウェアであるため、このような理解が間違っています。

2、keepalivedの作品

keepalivedのVRRPプロトコルはに基づいて実装されています

  • VRRP(仮想ルータ冗長プロトコル)、すなわち仮想ルータ冗長プロトコルVRRPがありますスタンバイモード、プロトコルルータはステージNルータへについて、高可用性と考えることができる契約は、仮想ルータ群の同じ機能を提供する、あるグループのマスタと複数のバックアップは、マスタルータ上の外部サービスプロバイダVIPは(あります他のマシンのVIP用のデフォルトルート)LAN内では、マスターがマルチキャスト送信されます、VRRPパケットを受信しないバックアップはマスターが出てぐずぐずすることを考えると、それは、バックアップマスターVRRPは、選挙の優先度に応じていつホスト間のデータ通信に影響を与えることなく切り替えることにより、ネットワーク障害VRRP装置は、ルータは、高可用性を確保する場合には、透明であってもよいです。
  • 仮想ルータでは、唯一のマスターの役割でルータがVRRPパケットを送信することであっただろう、ルータはマスタの役割から送信された情報のパケットを受け入れるBACKUP役割です。

3、転送のkeepalivedの高可用性フェールオーバーの原則

ときkeepalivedのサービス作業、メインマスターノードは、メインのマスターノードに障害が発生したとき、あなたはハートビートメッセージを送信することはできません、見て、彼はまだ生きてバックアップのバックアップノードを伝えるために、スタンバイノードにハートビートメッセージを(マルチキャストモード)を送信し続けますスタンバイ・ノードは独立したマスターノードにすることはできませんハートビートの到着を検出し続け、その後、メインマスターノードのIPリソースとサービスを引き継ぐために、プログラムを引き継ぐために自分自身を呼び出します。場合は、メインマスターノードの復旧、バックアップ、バックアップノードがプライマリノードが自身を失敗したときに引き継ぐために、IPリソースとサービスをリリースし、その元のスタンバイの役割に復元されます。

4、keepalivedの操作機構

  • ネットワーク層、4層:トランスポート層、5層:アプリケーション層TCP / IP参照モデルを作業keepalivedの3。

(1)ネットワーク層
、ネットワーク層の4つのプロトコル(IP、インターネットプロトコル、インターネット制御メッセージプロトコル月ICMP、アドレス解決プロトコルARP、逆アドレス解決プロトコルRARP)。作業の最も一般的な方法を使用してネットワーク層にkeepalivedのことであるピング機能と同様、各ノードのパケット、クラスタサーバによってICMP ICMPプロトコルを送ります。ノードが応答パケットを返さない場合、ノードに障害が発生していると考えられる、keepalivedのは、このノードに障害が発生した報告し、クラスタ内のサーバーノードから削除します。

(2)トランスポート層は、
伝送制御プロトコル(TCP)およびユーザ・データグラム・プロトコルUDP:二つの主要なプロトコルを提供します。伝送制御プロトコルTCPデータ出力が信頼性の高いサービスを提供することができる、接続ポートは、送信機と受信機のポートに接続されたポートで確立されるTCPサービスのニーズを得るために、TCPおよびIPアドレスを表します。、keepalivedのポート接続およびTCPプロトコル走査技術で利用輸送層が決定しているが、通常のクラスタ・ノードかどうか、そのような一般的なWebサーバのポート80、トランスポート層は、これらの信号は、データポートではなく、データが応答で返された検出keepalivedのと、それは、これらのポートは、ノードを異常とみなされ、サーバクラスタから対応するポート取り除くそれらを強制されます。

(3)アプリケーション層
あなたは、FTP、TELNEL、SMTP、DNS、および高レベルのプロトコルの他の様々なタイプを実行することができます、操作のkeepalivedのモードも、より包括的かつ複雑です。ユーザープログラミングやスクリプトにより、例えば、カスタムkeepalivedのkeepalivedの作業を実行できますが、意志keepalivedのは、プログラムや様々なサービスを検出するためには、ユーザが設定したパラメータに従って正しく機能しています、検出結果及びユーザによる矛盾keepalivedのセット場合、keepalivedのは、サーバクラスタ内の対応するサーバから削除されます。

5、インタビューkeepalivedのは、テキスト表現の作品

 Keepalived高可用对之间是通过VRRP通信的,因此,我们从VRRP开始了解起:
1) VRRP,全称 Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,VRRP的出现是为了解决静态路由的单点故障。
2) VRRP是通过一种竟选协议机制来将路由任务交给某台 VRRP路由器的。
3) VRRP用 IP多播的方式(默认多播地址(224.0_0.18))实现高可用对之间通信。
4) 工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,就启动接管程序接管主节点的开源。备节点可以有多个,通过优先级竞选,但一般 Keepalived系统运维工作中都是一对。
5) VRRP使用了加密协议加密数据,但Keepalived官方目前还是推荐用明文的方式配置认证类型和密码。
介绍完 VRRP,接下来我再介绍一下 Keepalived服务的工作原理:
1)Keepalived高可用对之间是通过 VRRP进行通信的, VRRP是遑过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。
2)在 Keepalived服务对之间,只有作为主的服务器会一直发送 VRRP广播包,告诉备它还活着,此时备不会枪占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性.接管速度最快可以小于1秒。
 

二、LVS + keepalivedの+からhttpd

実験環境

仮想マシンを開きます。 SERVER4(IP:172.25.7.4)、高可用性は、configureのyumソースに使用します。

SERVER1(IP:172.25.7.1)、準備:主にSERVER4(IP:172.25.7.4)、keepalivedのソースコンパイラ(同ステップ)
1、インストールパッケージを抽出します。タールzxf keepalivedの-2.0.6.tar.gz
ここに画像を挿入説明
2、keepalivedの-2.0.6を:エキスディレクトリに、インストールに依存した方法(欠けているものを何を意味するのか)

yum install openssl-devel -y
yum install gcc  -y
 

ここに画像を挿入説明
ここに画像を挿入説明
3.コンパイル ./configure --prefix =は/ usr / local / keepalivedの--with-INIT = systemdに

  • 。/設定--help:
    参照-INIT = --with(成り上がり|システムD | SYSV | SUSEを| OpenRC)、タイプの初期化を指定systemdには、のRHEL6バージョンとしてSYSV rhel7バージョンである
    ここに画像を挿入説明
    コア:使用IPVSフレームワークYesに、コンパイルが成功しています
    ここに画像を挿入説明

4、インストール:作る&& make installを

5、は/ usr / local / keepalivedのディレクトリ、設定ソフトリンクを入力します。

cd /usr/local/keepalived/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/

ここに画像を挿入説明

6、電子メールソフトウェアをインストールします。 yumをインストールmailxの-y 目的:エラーメッセージが発生するかどうかを確認するために、

ここに画像を挿入説明
マスター(SERVER1)は、keepalivedのを配置しました

7、確認ldirectord(ウェブクラスタサービスのバックエンド監視)されます 近いです それはヘルスチェックを持ってkeepalivedのため。

ここに画像を挿入説明
ここに画像を挿入説明

8、VIPを削除 IP addrはデル172.25.7.100/24 devのeth0の一緒にkeepalivedの所有することになるので

ここに画像を挿入説明

9、server1上の明確な方針をLVS:ipvasdm -C

図10に示すように、編集されたSERVER1(マスターノード)keepalivedのプロフィール:vimの/usr/local/keepalived/etc/keepalived/keepalived.conf

# 全局配置
global_defs {
   notification_email {
     root@localhost					
     ##节点宕机给本机发送邮件-->本机的root用户(安装mail软件,看是否发送邮件)
   }
   notification_email_from keepalived@localhost		
   		##发送人名称
   smtp_server 127.0.0.1				
   		##发送服务器(本机)
   smtp_connect_timeout 30				
   		##指定smtp连接超时时间
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr			
   		##运行keepalived机器的一个标识!
   #vrrp_strict						
   		##注释掉,不然会有问题
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER			
    		##主节点(MASTER	)
    interface eth0			
    		##说明:主和备用的必须一致
    virtual_router_id 58	
    		##(51+7)优先级,越大越优先启动 
    priority 100			
    		##说明:备用的必须小于100
    advert_int 1	
    		##检查间隔	
    authentication {
        auth_type PASS
        	##认证方式(密码认证)
        auth_pass 1111
        	##认证的密码
    }
    virtual_ipaddress {
        172.25.7.100			
        	##虚拟VIP-->不用手动创建(可以创建多个,对应不同的服务)
    }
}
# 虚拟服务的相关配置-->理解成IPVS表规则
virtual_server 172.25.7.100 80 {
    delay_loop 5			
    	##当rs报错时,尝试多少次之后才邮件告知
    lb_algo rr				
    	##轮询 ,负载均衡的算法(10种)
    lb_kind DR				
    	##DR模式,默认时NAT模式
    #persistence_timeout 50 
    	##注释(保持连接的时间)
    protocol TCP

    real_server 172.25.7.2 80 {
	TCP_CHECK {
        weight 1
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    real_server 172.25.7.3 80 {
	TCP_CHECK {
        weight 1
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

ここに画像を挿入説明

ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明

11、 将server1(主节点)编辑好的keepalived配置文件keepalived.conf 发送到server4(备节点)。

ここに画像を挿入説明
==编辑备节点(server4)的配置文件 ==

##修改这两个选项
state BACKUP
priority 50		 

ここに画像を挿入説明
12、配置后端服务器

在server2上:

ip addr add 172.25.7.100/24 dev eth0
arptables -A INPUT -d 172.25.7.100 -j DROP
arptables -A OUTPUT -s 172.25.7.100 -j mangle --mangle-ip-s 172.25.7.2 

在server3上:

ip addr add 172.25.7.100/24 dev eth0
arptables -A INPUT -d 172.25.7.100 -j DROP
arptables -A OUTPUT -s 172.25.7.100 -j mangle --mangle-ip-s 172.25.7.3 

13、在 server1和server4 上,开启keepalived服务 systemctl start keepalived
ここに画像を挿入説明
14、开启服务后,在server4(备服务器BACKUP)上,自动添加了策略:ipvsadm -l

ここに画像を挿入説明
ここに画像を挿入説明

开启服务后,在server1(主服务器MASTER)上,自动添加了策略:ipvsadm -l 和VIP。

  • 虚拟IP只匹配到主服务器上(谁是就匹配到谁)

ここに画像を挿入説明
ここに画像を挿入説明

测试

ここに画像を挿入説明

模拟后端web服务器server2宕机
ここに画像を挿入説明
此时,客户端访问的资源都来自于后端web服务器server3
ここに画像を挿入説明
在server1LVS调度机上,可以看到将宕机的server2踢出,只保留了server3
ここに画像を挿入説明

且server1上,会收到报错的提示邮件

ここに画像を挿入説明

ここに画像を挿入説明
ここに画像を挿入説明

模拟LVS调度机MASTER:server1宕机,
ここに画像を挿入説明
此时,server4(BACKUP)随时监控MASTER(server1),一旦发现宕机,立马接替server1的所有资源和VIP。
ここに画像を挿入説明

ここに画像を挿入説明

ここに画像を挿入説明

ここに画像を挿入説明

三、LVS+KeepAlived+Vsftpd

环境

主机名 ip 服务名
server1 172.25.70.1 MASTER
server2 172.25.70.2 后端服务器1
server3 172.25.70.3 后端服务器2
server4 172.25.70.4 BACKUP

1、在 MASTER(server1)和BACKUP(server4) 上,进行以下:

1)解压及源码安装
 tar zxf keepalived-2.0.6.tar.gz
 cd keepalived-2.0.6
 # 安装依赖性软件
 yum install gcc -y
 ./configure --prefix=/usr/local/keepalived --with-init=systemd
 yum install openssl-devel -y
 ./configure --prefix=/usr/local/keepalived --with-init=systemd
 	## 核心:Use IPVS Framework为Yes	
 make && make install
 2)设置软链接
 cd /usr/local/keepalived/
 ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
 ln -s /usr/local/keepalived/etc/keepalived/ /etc/
 ln -s /usr/local/keepalived/sbin/keepalived /sbin/
 3)安装邮件软件
 yum install mailx -y 
 4)安装LVS策略工具
 yum install ipvsadm -y

2、配置MASTER的keepalived服务

1)IPVS规则的清理 ipvsadm -C 
2)配置文件参数
vim /usr/local/keepalived/etc/keepalived/keepalived.conf
   
   global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 172.25.70.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.70.200
    }
}

virtual_server 172.25.70.200 21 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP

    real_server 172.25.70.2 21 {
        TCP_CHECK{
            weight 1
            connect_port 21
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

    real_server 172.25.70.3 21 {
        TCP_CHECK{
            weight 1
            connect_port 21
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

3、配置BACKUP的keepalived服务,更改2个参数:
ここに画像を挿入説明

4、在 SERVER2とserver3の 設定vsftpdのサービスで、サービスを開始します。

 
1)添加虚拟ip
ip addr add 172.25.70.200/32 dev eth0 
2)解决不论询问题
yum install -y arptables
arptables -A INPUT -d 172.25.70.200 -j DROP
arptables -A OUTPUT -s 172.25.70.200 -j mangle --mangle-ip-s 172.25.70.2
5)配置后端服务
yum install vsftpd -y
systemctl start vsftpd
6)开启keepalived
systemctl start arptables 

ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
server2の中:
ここに画像を挿入説明

server3の中:
ここに画像を挿入説明
サービスを開いた後、自動的にVIPのMASTERに追加
ここに画像を挿入説明

MASTERのダウンタイムは、BACKUP MASTERは、資源やVIPのすべてを引き継ぐ場合。
ここに画像を挿入説明

ここに画像を挿入説明

クライアントのテスト:

意志 50パラメータコメントpersistence_timeout 実験的な現象:クライアントが接続することはできませんが、フロントエンドコントローラの数、回転を数えることができます!

ここに画像を挿入説明

ここに画像を挿入説明

公開された102元の記事 ウォン称賛21 ビュー5338

おすすめ

転載: blog.csdn.net/ranrancc_/article/details/102498467