4.12. 配置共享块存储
要创建额外的存储资源,您可以使用 Amazon Elastic Block Storage (EBS) Multi-Attach 卷为红帽高可用性集群配置共享块存储。请注意,这个流程是可选的,以下步骤假设三个带有 1TB 共享磁盘的实例(三节点集群)。
先决条件
流程
使用 AWS 命令 create-volume 创建一个共享块卷。
aws ec2 create-volume --availability-zone <availability_zone> --no-encrypted --size 1024 --volume-type io1 --iops 51200 --multi-attach-enabled
$ aws ec2 create-volume --availability-zone <availability_zone> --no-encrypted --size 1024 --volume-type io1 --iops 51200 --multi-attach-enabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,以下命令在
us-east-1a可用区域中创建一个卷。aws ec2 create-volume --availability-zone us-east-1a --no-encrypted --size 1024 --volume-type io1 --iops 51200 --multi-attach-enabled
$ aws ec2 create-volume --availability-zone us-east-1a --no-encrypted --size 1024 --volume-type io1 --iops 51200 --multi-attach-enabled { "AvailabilityZone": "us-east-1a", "CreateTime": "2020-08-27T19:16:42.000Z", "Encrypted": false, "Size": 1024, "SnapshotId": "", "State": "creating", "VolumeId": "vol-042a5652867304f09", "Iops": 51200, "Tags": [ ], "VolumeType": "io1" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在下一步中您需要
VolumeId。对于集群中的每个实例,使用 AWS 命令 attach-volume 附加一个共享块卷。使用您的
<instance_id>和<volume_id>。aws ec2 attach-volume --device /dev/xvdd --instance-id <instance_id> --volume-id <volume_id>
$ aws ec2 attach-volume --device /dev/xvdd --instance-id <instance_id> --volume-id <volume_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,以下命令将共享块卷
vol-042a5652867304f09附加到实例 i-0eb803361c2c887f2。aws ec2 attach-volume --device /dev/xvdd --instance-id i-0eb803361c2c887f2 --volume-id vol-042a5652867304f09
$ aws ec2 attach-volume --device /dev/xvdd --instance-id i-0eb803361c2c887f2 --volume-id vol-042a5652867304f09 { "AttachTime": "2020-08-27T19:26:16.086Z", "Device": "/dev/xvdd", "InstanceId": "i-0eb803361c2c887f2", "State": "attaching", "VolumeId": "vol-042a5652867304f09" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
验证
对于集群中的每个实例,使用带有
<ip_address>的ssh命令来验证块设备是否可用。ssh <ip_address> "hostname ; lsblk -d | grep ' 1T '"
# ssh <ip_address> "hostname ; lsblk -d | grep ' 1T '"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,以下命令列出了实例 IP
198.51.100.3的详细信息,其中包括主机名和块设备。ssh 198.51.100.3 "hostname ; lsblk -d | grep ' 1T '"
# ssh 198.51.100.3 "hostname ; lsblk -d | grep ' 1T '" nodea nvme2n1 259:1 0 1T 0 diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
ssh命令,验证集群中的每个实例是否都使用相同的共享磁盘。ssh <ip_address> "hostname ; lsblk -d | grep ' 1T ' | awk '{print \$1}' | xargs -i udevadm info --query=all --name=/dev/{} | grep '^E: ID_SERIAL='"# ssh <ip_address> "hostname ; lsblk -d | grep ' 1T ' | awk '{print \$1}' | xargs -i udevadm info --query=all --name=/dev/{} | grep '^E: ID_SERIAL='"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,以下命令列出了 IP 地址为
198.51.100.3的实例的详细信息,其中包括主机名和共享磁盘卷 ID 。ssh 198.51.100.3 "hostname ; lsblk -d | grep ' 1T ' | awk '{print \$1}' | xargs -i udevadm info --query=all --name=/dev/{} | grep '^E: ID_SERIAL='"# ssh 198.51.100.3 "hostname ; lsblk -d | grep ' 1T ' | awk '{print \$1}' | xargs -i udevadm info --query=all --name=/dev/{} | grep '^E: ID_SERIAL='" nodea E: ID_SERIAL=Amazon Elastic Block Store_vol0fa5342e7aedf09f7Copy to Clipboard Copied! Toggle word wrap Toggle overflow