keepalived 高可用性 | Ceph 分散ストレージの導入


序文の記事: https://blog.csdn.net/shengweiit/article/details/135168233

キープアライブの高可用性

2 つのプロキシ サーバーを展開すると、次の効果が得られます。

  • キープアライブを使用して 2 つのプロキシ サーバーの高可用性を実現する
  • vip を 192.168.4.80 として設定します。
  • 対応するドメイン名解決レコードを変更します。
    ここに画像の説明を挿入します
    ここに画像の説明を挿入します

1. 2 番目の haproxy プロキシ サーバーを構成する

HAProxy のデプロイ

以前に HAProxy を 192.168.4.5 にデプロイしたため、HAProxy を 192.168.4.6 にインストールした後、4.5 の構成ファイルを 4.6 にコピーできます。

[root@proxy2 ~]# yum -y install haproxy
[root@proxy2 ~]# scp 192.168.4.5:/etc/haproxy/haproxy.cfg /etc/haproxy/
[root@proxy2 ~]# systemctl start haproxy
[root@proxy2 ~]# systemctl enable haproxy

ここに画像の説明を挿入します

2. 2 つのプロキシ サーバーに対してキープアライブを構成する

最初のプロキシ サーバー プロキシ (192.168.4.5) を構成します。

パッケージ --> 構成ファイルの変更 --> サービスの開始

[root@proxy ~]# sed -i '36,$d' /etc/keepalived/keepalived.conf # 删除36行之后的
[root@proxy ~]# yum install -y keepalived  # 装包
[root@proxy ~]# vim /etc/keepalived/keepalived.conf
global_defs {
    
    
  router_id  proxy1                #设置路由ID号
  vrrp_iptables                    #设置防火墙规则(手动添加该行)
}
vrrp_instance VI_1 {
    
    
  state MASTER                         #主服务器为MASTER(备服务器需要修改为BACKUP)
  interface eth0                    #网卡名称(不能照抄网卡名)
  virtual_router_id 51                
  priority 100                     #服务器优先级,优先级高优先获取VIP
  advert_int 1
  authentication {
    
    
    auth_type pass
    auth_pass 1111                #主备服务器密码必须一致
  }
  virtual_ipaddress {
    
                    #谁是主服务器谁获得该VIP (这个是以后的公网IP)
192.168.4.80 
}    
}
[root@proxy ~]# systemctl start keepalived
[root@proxy ~]# systemctl enable keepalived

2 番目のプロキシ サーバー プロキシ (192.168.4.6) を構成します。

[root@proxy2 ~]# yum install -y keepalived
[root@proxy2 ~]# scp 192.168.4.5:/etc/keepalived/keepalived.conf /etc/keepalived/
global_defs {
    
    
  router_id  proxy2                        #设置路由ID号
vrrp_iptables                               #设置防火墙规则(手动添加该行)
}
vrrp_instance VI_1 {
    
    
  state BACKUP                         #主服务器为MASTER(备服务器需要修改为BACKUP)
  interface eth0                    #网卡名称(不能照抄网卡名)
  virtual_router_id 51                
  priority 50                         #服务器优先级,优先级高优先获取VIP
  advert_int 1
  authentication {
    
    
    auth_type pass
    auth_pass 1111                       #主备服务器密码必须一致
  }
  virtual_ipaddress {
    
                       #谁是主服务器谁获得该VIP
192.168.4.80 
}    
}
[root@proxy2 ~]# systemctl start keepalived
[root@proxy2 ~]# systemctl enable keepalived

ここに画像の説明を挿入します

DNSサーバーを変更する

www.lab.com のホスト名のアドレスを vip 192.168.4.80 に解決します。192.168.4.5 は DNS サーバーです。

[root@proxy ~]# vim /var/named/lab.com.zone
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       NS      dns.lab.com.
dns     A       192.168.4.5
www     A       192.168.4.80

DNSサービスを再起動する

[root@proxy ~]# systemctl restart named

テスト:

# 在客户端
host www.lab.com # 解析到的ip地址是 192.168.4.80
ping 192.168.4.80 # ping通 说明网络中有192.168.4.80
# 在优先级高的keepalived服务器上查看vip地址 
ip a s | grep 192

Ceph分散ストレージの導入

ceph 分散ストレージを導入すると、次の効果が得られます。

  • 3 台のサーバーを使用して ceph 分散ストレージを展開する
  • ceph ファイルシステム共有を実装する
  • Web サイトのデータを NFS から ceph ストレージに移行する

ここに画像の説明を挿入します
ここに画像の説明を挿入します

ハードウェアの準備

克隆3台虚拟机
每台虚拟机分别添加2块盘 20G
每台虚拟机添加一个光驱
检查盘和光驱是否添加正确

ここに画像の説明を挿入します

実験環境の準備

1. 3 つのホストのローカル yum ソースを構成し、ceph サービス パッケージをインストールします

  • ceph10.iosをCD-ROMドライブに入れます
    ここに画像の説明を挿入します
  • 光学ドライブをマウントし、光学ドライブをマウントするようにブートを構成します。
mkdir /ceph
vim /etc/fstab
/dev/sr0 /ceph iso9660 defaults 0 0
mount -a 

ここに画像の説明を挿入します

  • ceph サービス パッケージをインストールするようにローカル yum ソースを構成する
vim  /etc/yum.repos.d/ceph.repo
[mon]
name=mon
baseurl=file:///ceph/MON
enabled=1
gpgcheck=0
[osd]
name=osd
baseurl=file:///ceph/OSD
enabled=1
gpgcheck=0
[tools]
name=tools
baseurl=file:///ceph/Tools
enabled=1
gpgcheck=0

yum repolist                #验证YUM源软件数量

ここに画像の説明を挿入します

  • ノード 1 がパスワードなしでノード 1、ノード 2、およびノー​​ド 3 に接続できるように、ノード 1 で ssh キーを構成します。ノード 1 にクラスターの管理ホストとクラスター内のストレージ サーバーの両方を管理させます。
[root@node1 ~]# ssh-keygen  -f /root/.ssh/id_rsa  -N  ''
#-f后面跟密钥文件的名称(创建密钥到哪个文件)
#-N  ''设置密钥的密码为空(不要给密钥配置密码)

#通过ssh-copy-id将密钥传递给node1,node2,node3
[root@node1 ~]# for i in   41  42  43
do
ssh-copy-id  192.168.2.$i
done
  • 3 台すべてのマシンでホスト名マッピングを実行します (ソース ファイルは削除しないでください)。
[root@node1 ~]# vim /etc/hosts      #修改文件,手动添加如下内容(不要删除原文件的数据)
192.168.2.41    node1
192.168.2.42     node2
192.168.2.43    node3

[root@node1 ~]# for i in 41 42 43
do
     scp /etc/hosts 192.168.2.$i:/etc
done
  • NTP サービスの同期時間を構成します
    。 注: サーバーとして node1 サーバーを使用します。
  1. NTPサービスの構成ファイルを変更し、再起動します。
[root@node1 ~]# vim /etc/chrony.conf
allow 192.168.2.0/24        #修改26行
local stratum 10            #修改29行(去注释即可)
[root@node1 ~]# systemctl restart chronyd
  1. クライアントとしてのnode2とnode3
[root@node2 ~]# vim /etc/chrony.conf
server 192.168.2.41   iburst              #配置文件第二行,手动加入该行内容
[root@node2 ~]# systemctl restart chronyd
[root@node2 ~]# chronyc sources -v # 验证


[root@node3 ~]# vim /etc/chrony.conf
server 192.168.2.41   iburst              #配置文件第二行,手动加入该行内容
[root@node3 ~]# systemctl restart chronyd
[root@node3 ~]# chronyc sources -v

ここに画像の説明を挿入します

2. ceph クラスターのデプロイ

  • 管理ツール ceph-deploy をノード 1 ホストにインストールします。
[root@node1 ~]# yum -y install ceph-deploy
[root@node1 ~]# mkdir ceph-cluster
[root@node1 ~]# cd ceph-cluster
  • すべての ceph ノードに ceph 関連のソフトウェア パッケージをインストールします。
[root@node1 ceph-cluster]# for i in node1 node2 node3
do
     ssh $i "yum -y install ceph-mon ceph-osd ceph-mds"
done
  • mon サービスの初期化は、ceph-cluster ディレクトリで行う必要があります。
#生成ceph配置文件
[root@node1 ceph-cluster]# ceph-deploy new node1 node2 node3
#拷贝ceph配置文件给node1,node2,node3,启动所有主机的mon服务
[root@node1 ceph-cluster]# ceph-deploy mon create-initial

[root@node1 ceph-cluster]# ceph -s                    #查看状态(此时失败是正常的)
    cluster 9f3e04b8-7dbb-43da-abe6-b9e3f5e46d2e
     health HEALTH_ERR   # 此时还没有加存储盘
     monmap e2: 3 mons at
 {
    
    node1=192.168.2.41:6789/0,node2=192.168.2.42:6789/0,node3=192.168.2.43:6789/0}
     
osdmap e45: 0 osds: 0 up, 0 in
  • ceph-deploy ツールを使用してデータ ディスクを初期化します (node1 操作のみ)。実際の状況に応じてハードディスク名を入力します。コピーすることはできません。
ceph-deploy disk zap 主机名:磁盘名 主机名:磁盘名

ここに画像の説明を挿入します

[root@node1 ceph-cluster]# ceph-deploy disk  zap  node1:sdb  node1:sdc    
[root@node1 ceph-cluster]# ceph-deploy disk  zap  node2:sdb  node2:sdc
[root@node1 ceph-cluster]# ceph-deploy disk  zap  node3:sdb  node3:sdc
  • OSD クラスターを初期化し、実際の状況に応じてディスク名を入力します。
#每个磁盘都会被自动分成两个分区;一个固定5G大小;一个为剩余所有容量
#5G分区为Journal缓存;剩余所有空间为数据盘。
[root@node1 ceph-cluster]# ceph-deploy osd create  node1:sdb  node1:sdc  
[root@node1 ceph-cluster]# ceph-deploy osd create  node2:sdb  node2:sdc
[root@node1 ceph-cluster]# ceph-deploy osd create  node3:sdb  node3:sdc 
[root@node1 ceph-cluster]# ceph -s                 #查看集群状态,状态为OK

ここに画像の説明を挿入します
有効なスペース:
ここに画像の説明を挿入します
再作成する場合は、(エラーに対する統合された解決策)
管理ホスト node1 上の現在の構成をクリアし
、インストールされているソフトウェアをすべて削除します。

[root@node1 ceph-cluster]# ceph-deploy purge node1
[root@node1 ceph-cluster]# ceph-deploy purge node2
[root@node1 ceph-cluster]# ceph-deploy purge node3

すべてのプロファイルとデータを削除します

[root@node1 ceph-cluster]# ceph-deploy purgedata node1
[root@node1 ceph-cluster]# ceph-deploy purgedata node2
[root@node1 ceph-cluster]# ceph-deploy purgedata node3

クラスター環境を確認します。
1. yum ソース
2. NTP サービス
3. SSH
4. ホスト名のバインド

3. ceph ファイルシステムのデプロイ

ceph クラスターによって提供されるディスクストレージスペースを使用して、Web ページファイルを 3 つの Web サイトサーバーに保存します

  • MDS サービスを開始します (ノード 1、ノード 2、またはノード 3 で開始することも、複数のホストで mds を開始することもできます)
[root@node1 ceph-cluster]# ceph-deploy mds create node3
  • ストレージプール(ファイルシステムはinnode(ストレージデータ情報)とblock(ストレージデータ)で構成されます)を作成し、
    領域を分割してinnode情報とブロック情報を格納します。
[root@node1 ceph-cluster]# ceph osd pool create cephfs_data 64
[root@node1 ceph-cluster]# ceph osd pool create cephfs_metadata 64
[root@node1 ceph-cluster]# ceph osd lspools      #查看共享池
0 rbd,1 cephfs_data,2 cephfs_metadata
  • ファイルシステムの作成
[root@node1 ceph-cluster]# ceph fs new myfs1 cephfs_metadata cephfs_data  # cephfs_metadata存放innode cephfs_data存放数据
[root@node1 ceph-cluster]# ceph fs ls
name: myfs1, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

4. Web サイトのデータを ceph クラスターに移行する

現在の Web サイト クラスタの Web ページ ファイルは、NFS31 サーバーに保存されています。Web
サイト データを移行するには、NFS31 サーバーに保存されている Web ページを、ceph クラスタによって作成されたファイル システムに保存します。
具体的な操作は次のとおりです。

  • web1、web2、web3 の NFS 共有をアンインストールし、
    誰かがリアルタイムでファイルの読み書きをできないようにサービスを一時停止します。
[root@web1 ~]# /usr/local/nginx/sbin/nginx -s stop
[root@web2 ~]# /usr/local/nginx/sbin/nginx -s stop
[root@web3 ~]# /usr/local/nginx/sbin/nginx -s stop
[root@web1 ~]# umount /usr/local/nginx/html
[root@web2 ~]# umount /usr/local/nginx/html
[root@web3 ~]# umount /usr/local/nginx/html
[root@web1 ~]# vim /etc/fstab
#192.168.2.31:/web_share/html /usr/local/nginx/html/ nfs defaults 0 0
[root@web2 ~]# vim /etc/fstab
#192.168.2.31:/web_share/html /usr/local/nginx/html/ nfs defaults 0 0
[root@web3 ~]# vim /etc/fstab
#192.168.2.31:/web_share/html /usr/local/nginx/html/ nfs defaults 0 0
  • Ceph ファイル システムを Web サーバーに永続的にマウントするには 3 つのソリューションがあります (web1、web2、および web3 はすべて操作が必要です)
    。いずれかを使用できます。Ceph ファイル システムのマウントにどの方法が使用されるかに関係なく、ユーザー名ceph クラスター内の任意のサーバーでユーザー名とパスワードを取得し、node1 ホストでユーザー名とパスワードを表示します。
[root@node1 ~]# cat /etc/ceph/ceph.client.admin.keyring 
[client.admin]
    key = AQA0KtlcRGz5JxAA/K0AD/uNuLI1RqPsNGC7zg==

/etc/rc.local はブート スクリプトであり、このファイルに置かれたコマンドはブート時に自動的に開始されます。
ceph-common は ceph クライアント ソフトウェアです。

[root@web1 ~]# yum -y install ceph-common
[root@web2 ~]# yum -y install ceph-common
[root@web3 ~]# yum -y install ceph-common
[root@web1 ~]#  mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ \
-o name=admin,secret=AQA0KtlcRGz5JxAA/K0AD/uNuLI1RqPsNGC7zg==
# 系统重启之后依旧挂载
[root@web1 ~]# echo 'mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ \
-o name=admin,secret=AQA0KtlcRGz5JxAA/K0AD/uNuLI1RqPsNGC7zg==' >> /etc/rc.local 
[root@web1 ~]# chmod +x /etc/rc.local

[root@web2 ~]#  mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ \
-o name=admin,secret=AQA0KtlcRGz5JxAA/K0AD/uNuLI1RqPsNGC7zg==
[root@web2 ~]# echo 'mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ \
-o name=admin,secret=AQA0KtlcRGz5JxAA/K0AD/uNuLI1RqPsNGC7zg==' >> /etc/rc.local 
[root@web2 ~]# chmod +x /etc/rc.local
[root@web3 ~]#  mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ \
-o name=admin,secret=AQA0KtlcRGz5JxAA/K0AD/uNuLI1RqPsNGC7zg==
[root@web3 ~]# echo 'mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ \
-o name=admin,secret=AQA0KtlcRGz5JxAA/K0AD/uNuLI1RqPsNGC7zg==' >> /etc/rc.local 
[root@web3 ~]# chmod +x /etc/rc.local

もう 1 つの解決策は、fstab を通じて永続的なマウントを実現することです。
ヒント: fstab を使用して永続的なマウントを実現する場合、クライアントはさらに libcephfs1 ソフトウェア パッケージをインストールする必要があります。

[root@web1 ~]# yum -y install libcephfs1
[root@web1 ~]# vim /etc/fstab
… …
192.168.2.41:6789:/ /usr/local/nginx/html/    ceph   defaults,_netdev,name=admin,secret=AQCVcu9cWXkgKhAAWSa7qCFnFVbNCTB2DwGIOA== 0 0

3 番目のマウント ソリューション: 高可用性の問題のために、マウント中に複数の IP を同時に書き込むことができます。

[root@web1 ~]# mount -t ceph  \
192.168.2.41:6789,192.168.2.42:6789,192.168.2.43:6789:/ /usr/local/nginx/html  \
-o name=admin,secret=密钥
永久修改:
[root@web1 ~]# vim /etc/fstab
192.168.2.41:6789,192.168.2.42:6789,192.168.2.43:6789:/ /usr/local/nginx/html/ \
ceph defaults,_netdev,name=admin,secret=密钥 0 0
  • NFS サーバーのデータを ceph に移行し、
    Web ページ ファイルを nfs にバックアップしてから、そのバックアップ ファイルを 3 つの Web サイト サーバーのいずれかにコピーして、そのバックアップ ファイルを含む Web サイト ホスト上でバックアップ ファイルを解凍します。
[root@nfs ~]# cd /web_share/html/
[root@nfs html]# tar -czpf /root/html.tar.gz ./*
[root@nfs html]# scp /root/html.tar.gz 192.168.2.11:/usr/local/nginx/html/
登陆web1将数据恢复到Ceph共享目录
[root@web1 html]# tar -xf html.tar.gz
[root@web1 html]# rm -rf html.tar.gz
  • ウェブサイトサービス開始
[root@web1 ~]# /usr/local/nginx/sbin/nginx
[root@web2 ~]# /usr/local/nginx/sbin/nginx
[root@web3 ~]# /usr/local/nginx/sbin/nginx

おすすめ

転載: blog.csdn.net/shengweiit/article/details/135193074