设为首页 收藏本站
查看: 1300|回复: 0

[经验分享] 利用ARM批量自动化创建SSD多磁盘RAID0虚拟机

[复制链接]

尚未签到

发表于 2017-7-1 08:55:25 | 显示全部楼层 |阅读模式
  在实际生产环境大规模部署的时候,有时需要能批量创建多台Linux虚拟机,并且该虚拟机带多个硬盘,一些数据库环境,比如MySQL和MongoDB等,会需要超过10000de  IOPS, 那么创建的虚拟机,最好可以自动化创建RAID 0磁盘阵列,以满足高IOPS的要求,另外Availability Set,NSG,public IP,DNS等等当然是必不可少的。
  对于这样一个复杂的需求,有多种选项可以考虑,但各有优劣,有些由于限制,可能无法工作:

  • 使用VMSS,可以快速扩展,自动收缩,但目前并不支持数据盘,所以并不是一个option
  • 使用Powershell/Azure CLI来写脚本,在ASM的时代,这可能是唯一的选项,但定义实现混杂在一起,难于维护,在ASM下性能等方面有很大的问题,在ARM下不推荐
  • ARM模式下,ARM模板负责定义各个组件,使用Azure CLI或者Powershell负责创建,这个方式也是ARM模式下推荐的方式

  • 对于Linux下自动化的RAID 0创建,毫无疑问需要shell脚本,然后利用Azure VM的extension即可
  既然基本的策略确定下来了,那我们就先使用ARM模板来创建虚拟机,在QuickStart上并没有现成的模板可以直接使用去创建多个虚拟机,多个磁盘,并且通过简单的参数文件就可以指定,所以我做了一个模板,支持以下功能:

  • 支持通过参数指定多个虚拟机创建
  • 支持Public IP,每个虚拟机一个
  • 支持NSG,默认开放22端口给ssh
  • 支持availability Set,可以指定名称
  • 支持多个磁盘,默认是添加两个P30的磁盘,你可以简单修改,增加或者减少
  • 支持自定义脚本,自动化创建RAID 0磁盘阵列
  完整的ARM模板我已经放在了Github下,如果需要可以下载使用:
  https://github.com/kingliantop/azurelabs/tree/master/AzureChinaARMTemplate/VM-multiple-datadisks-SSD
  在创建ARM模板的时候,如果你希望传入参数来决定创建多少个虚拟机,需要注意处理各个互斥的资源,比如nic,比如IP地址,因为这些资源一旦分配给第一台虚拟机,就不能再分配给第二台虚拟机了,否则就会报错:
DSC0000.png

  对于自动化创建RAID 0的脚本,原始脚本(vm-disk-utils-0.1.sh)是为Ubuntu设计的:
  https://github.com/Azure/azure-quickstart-templates/tree/master/shared_scripts/ubuntu
  我的测试环境是CentOS6.8,无法工作,我做了一些修改和优化,详细说明请见脚本描述:
  https://github.com/kingliantop/azurelabs/blob/master/AzureChinaARMTemplate/VM-multiple-datadisks-SSD/vm-disk-utils-0.2.sh
  那么如何使用这些模板来快速的创建虚拟机呢?
修改模板参数文件

  • 首先要根据你的需求,做一个基本的参数修改,比如你创建的Linux虚拟机的用户名密码,需要创建多少台,需要创建什么版本的等等,请打开parameters.json文件,里面有四个参数,做一些相应修改并保存,关于参数:"virtualMachinesNamePrefix",因为创建多台虚拟机,所以这个名字会按次序增加,比如你设置这个参数为mongodb,那么虚拟机名称就会为mongodb-1,mongodb-2等以此类推
  • 如果你想修改其他一些参数,比如OS版本号,命名规则等等,可以打开template.json进行修改,并保存
Linux和Mac用户


  • 安装Azure CLI,如果不知道如何安装,请参考掘文:  http://cloudapps.blog.51cto.com/3136598/1842181
  • 下载模板到本地目录。
  • 方法一:我已经做了一个简单的deploy.sh用来在Linux和Mac下部署,可以直接使用

  • 方法二:直接执行命令  #登陆到Azure账号
      azure login -u USERNAME -p PASSWORD -e AzureChinaCloud
      #创建资源组
      azure group create --name="stevenvmgroup" --location="China North"
      #利用模板创建多个虚拟机并自动化配置RAID 0
      azure group deployment create --name="mydcoschinadeploy" --resource-group="stevenacsdcosgp" --template-file=".\template.json" --parameters-file=".\parameters.json"
Windows用户

  • 安装Azure Powershell
  • 下载模板到本地
  • 方法一:直接使用deploy.ps1

  • 方法二:直接执行命令  #登陆到Azure的中国账号
      Login-AzureRmAccount -EnvironmentName AzureChinaCloud
      #基本参数,部署名和资源名一样
      $VerbosePreference="Continue"
      $deployName="stevenwebscale"
      $RGName=$deployName
      $locName="China North"
      $templateFile= ".\template.json"
      $templateParameterFile= ".\parameters.json"
      New-AzureRmResourceGroup -Name $RGName -Location $locName -Force
      New-AzureRmResourceGroupDeployment -Name myvmdetestgroup -ResourceGroupName myvmdetestgroup -TemplateParameterFile $templateParameterFile -TemplateFile $templateFile
图形化界面一键部署
  如果你非常不喜欢脚本创建:)可以打开我之前的Github链接:
  https://github.com/kingliantop/azurelabs/tree/master/AzureChinaARMTemplate/VM-multiple-datadisks-SSD
  选择Deploy to Azure,即可直接一键部署到Azure中国账号:
DSC0001.png

  将会出现参数窗口,选择使用那个资源组,创建多少个虚拟机,那个版本,什么类型的虚拟机,然后确定。填充完参数,直接创建即可:
DSC0002.png

  按照实际测试,创建10台DS4虚拟机包含NSG,publicIP,NIC,vnet等,每台虚拟机挂载2个P30盘,并配置RAID 0,对磁盘进行格式化,大整个过程大约只需要4分28秒
DSC0003.png

  可以看到10台虚拟机mysql-0到mysql-9全部成功创建:
DSC0004.png

  每台虚拟机上磁盘,网络等均成功创建:
DSC0005.png

DSC0006.png

  登陆到虚拟机,检查一下RAID 0的配置情况:


  • 可以看到两块磁盘已经被格式化,并被挂载到了/data
    DSC0007.png


  • 检查一些fstab下的配置,看看当前mount的自动化配置已经被自动添加:
    DSC0008.png

      可以看到,通过使用ARM模板,可以快速的创建复杂配置的虚拟机,大家可以用用看,如果有任何问题,可以到Github上提交问题,我可以尽可能的做些修改或者优化。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-389905-1-1.html 上篇帖子: 经典模式中如何实现跨数据中心的Vnet-to-Vnet连接 下篇帖子: 在HDInsight中从Hadoop的兼容BLOB存储查询大数据的分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表