在AWS上创建有状态的弹性块存储。
sebs的Python项目详细描述
有状态弹性块存储(sebs)
Sebs是为需要在自动调整中粘贴有状态应用程序的情况而创建的 最大大小为1的组。Sebs将确保在重新创建实例时 无论在哪个AZ中重新创建实例,都会将卷重新附加回实例。在
为什么
在实例是retired的情况下,单个实例ASG是很好的保护。 它还可以帮助您在实例所在的AZ发生故障时启用滚动升级和灾难恢复。在
先决条件
- Python3
- EC2实例配置文件,具有创建/删除快照和卷的权限。在
IAM策略示例
{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":["ec2:DetachVolume","ec2:AttachVolume","ec2:DeleteVolume","ec2:DeleteSnapshot","ec2:CreateTags","ec2:CreateSnapshot","ec2:CreateVolume"],"Resource":["arn:aws:ec2:*:*:instance/*","arn:aws:ec2:*::snapshot/*","arn:aws:ec2:*:*:volume/*"]},{"Effect":"Allow","Action":["ec2:DescribeInstances","ec2:DescribeVolumes","ec2:DescribeSnapshots"],"Resource":"*"}]}
安装
Sebs应该从EC2实例运行,也可以从userdata或任何CaC工具运行。 Sebs可以从pip或GitHub安装。在
来自pip
^{pr2}$来自GitHub
python3 -m pip install git+https://github.com/DontShaveTheYak/sebs.git#egg=sebs
使用
sebs
usage: sebs [-h] -b BACKUP [-n NAME] [-v] [--version]
optional arguments:
-h, --help show this help message and exit
-b BACKUP, --backup BACKUP
<Required> List of Devices to Backup
-n NAME, --name NAME <Optional> specify a your app name.
-v, --verbose Verbosity (-v, -vv, etc)
--version show program's version number and exit
注意:如果要在一个区域中有多个实例,请使用sebs,然后需要传入一个名称。在
sebs -b /dev/xvdz -n ${MY_APP_NAME}
下面是一个示例userdata脚本
#!/bin/bashexec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console)2>&1echo"Running Sebs" yum install python3 -y python3 -m pip install sebs # On RHEL and Amazon Linux2 /usr/local/bin is not in the path for root user. /usr/local/bin/sebs -b /dev/xvdz -n example-app echo'Waiting on device /dev/xvdz to be available.'while[ ! -e /dev/xvdz ];do sleep 1;doneecho'Device is ready.'
在第一次运行时,sebs将用一个控制标记标记安装在/dev/xvdz
的卷。
如果实例被重新创建,sebs将查找带有控制标记和
如果找到该卷,它会将该卷作为与之前相同的设备装载到实例中。在
贡献
请阅读CONTRIBUTING.md。在
版本控制
我们使用SemVer进行版本控制。对于可用版本, 参见tags on this repository。在
要查看发生了什么变化,请参阅CHANGELOG。在
许可证
此项目是在GPLv3许可下授权的-有关详细信息,请参阅LICENSE文件
- 项目
标签: