如何借助Salt Cloud配置aws ec2 价格实例

您的位置:
基于AWS EC2免费实例进行网站建设
日 10:20:54 | 作者:Russ Vanderpool | 来源:TechTarget中国
摘要:据估计,到2014年底全球将有十亿个注册域名和二亿五千万家活跃网站。这些网站到底位于哪里呢?大多数基于Web的企业的资源都是外部部署托管的。
据估计,到2014年底全球将有十亿个注册域名和二亿五千万家活跃网站。这些网站到底位于哪里呢?大多数基于Web的企业的资源都是外部部署托管的(如在数据中心),而和IBM/SoftLayer这样的企业都被列为主要的供应商。
很多基于Web的企业都是从(AWS)开始的,因为AWS的方便,因为AWS为用户提供了广泛的选择组合。此外,在AWS上发布一个网站可让企业根据业务需求自由扩展,而且只为所用的资源支付费用,这是非常灵活的。启动各类服务器是容易的,这可为企业提供一个竞争性的优势,并让企业用户能够快速地响应客户需求。
对于很多企业,尤其是寻求快速启动的小型企业或初创公司来说,持续的资本支出和专门的IT人员都过于昂贵,而且往往是遥不可及的。虽然共享网络托管供应商是价格低廉且易于使用的,但是其问题在于共享资源、不灵活的技术平台和可疑的安全性。诸如Bluehost、HostGator以及GoDaddyovercrowd这样的网络托管公司是实施服务器共享的,而这是对业务不利的。当超过1000个域托管在同一台服务器上时,网站的响应时间就会变得岌岌可危了,SEO排名就会受到冲击,企业用户就几乎没有能力快速扩展以满足客户需求了。
如果你认为AWS是你公司的正确选择,那么你可能需要启用一个EC2免费实例并实施一个一次性的开发项目。我们为配置一个EC2免费实例和创建你基于云计算的业务提供了具体的实施步骤。
启动一个EC2免费宏实例的要求
对于初学者来说,你需要一张信用卡和一个电话号码。我们的目标是使用AWS工具板建立一个亚马逊Linux实例。我们还将在实例中使用PuTTY PC软件应用程序和SSH(安全外壳)。我们还需要使用一些Linux命令来完成配置工作。最终结果是在AWS云计算Linux实例中Apache网络服务器下运行的一个基本的网站,外界用户可正常访问这个网站。你所需要的是:
• 互联网连接;
• 运行Windows操作系统的PC;
• 访问PuTTY,一个SSH和Telnet客户端;
• 访问你的域名注册商,例如,以便把你的域名指向新的网站。
在你创建一个AWS账户,验证你的ID并选择Basic支持计划之后,现在是时候配置你的EC2实例了。
配置一个免费实例
设置运行你的网站所需的环境就如同在一个沙箱中做游戏一样。为了配置你的第一个AWS EC2实例,请一定选择“免费”服务。请记住,如果你在某一步骤发生了问题,或者你认为你需要做出一些改变,这是很容易重新开始的。请按照如下这些步骤开始:
1. 登录AWS管理控制台,然后点击EC2。
2. 通过点击右上角的下拉式菜单,选择一个AWS区域。
3. 点击Launch开始配置EC2实例。
4. 点击Select进入“Amazon Linux AMI”实例类型,然后选择“micro 年十年”类型,如图一所示。
图一 选择一个亚马逊机器镜像
5. 选择Next:Configure Instance Details。
6. 保留默认设置,并点击Next:Add Storage, 然后 Next:Tag Instances,然后Next Configure Security Group。
7. 为该实例输入一个安全组名或者使用默认安全组名(启动-向导-1)。安全策略定义可根据你的意图定义对云计算实例的访问等级。保留预先填入的SSH类型,但点击Add Rule以及Custom TCP Rule,最后选择HTTP。这是允许世界上任意一个人访问你的网站的网络服务器端口。
8. 点击 Review and Launch ,然后 Launch。
9. 当“Select an existing key pair or create a new key pair”(选择现有密钥对或者创建一个新的密钥对)对话框出现时,你需要选择创建一个密钥对。创建密钥对可让你通过SSH访问EC2宏实例,以便于完成配置。
10. 在菜单中选择 Choose an existing key pair ,并选择 Create a new key pair。
11. 为密钥对输入一个名称,例如micro-security-instance ,然后点击下载密钥对按钮并将这个文件保存至你个人电脑上的安全所在。这个密钥文件可用于SSH至你的实例。
12. 点击Launch Instance 以启动你的AWS云计算宏实例。
参考资料1.:(Cloud Computing)描述了一种基于互联网的新的IT服务增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展而且经常是虚拟化的资源。云计算是继1980年代大型计算机到...2.:(Infrastructure as a service )是消费者使用处理、储存、网络以及各种基础运算资源,部署与执行操作系统或应用程式等各种软件。客户端无须购买服务器、软件等网络设备,...3.:平台即服务(Platform as a Service,简称)是一种云计算服务,提供运算平台与解决方案堆栈即服务。在云计算的典型层级中,平台即服务层介于软件即服务与基础设施即服务之间...
[责任编辑:行云之路 ]
正在加载...
我也说几句
汇编一周来国内外网络和IT行业发生的焦点新闻,精挑细选,第一时间推送独家采写的深度报道和热点专题,深入挖掘新闻事件背后的故事,剖析新闻事件的来龙去脉,让读者准确把握业界的发展态势。
汇集存储频道每周精华内容,让您在最短的时间内,以最便捷的方式获取权威的购买指南,专家博客,皆汇聚在此。
定期为您带来深入权威的网络,交换机,路由器,无线,通信领域信息服务,涵盖产品,技术,新闻,应用案例,评测,购买指南,专栏,技巧等多个方面的信息。与企业网络相关的一切,尽在网络通信邮件,您怎可错过?
新一代数据中心建设管理最新信息快递――聚焦新一代绿色数据中心的设计、建设、运营和管理,汇集业界专家与用户的最精粹观点,展示国内外数据中心经典案例!
定期为您带来安全领域权威专业的产品,技术,新闻,应用案例,评测,购买指南等信息,保护您在网络畅游之时不受病毒的威胁,企业运行之际减少安全的风险。一份邮件在手,一份安全在心!
深入、专业关注云计算相关的技术与实践,范围覆盖私有云建设、公有云服务运营、开源云平台发展、重要云服务商动态等领域,面向企业CIO和IT经理提供深度原创报道,以及云计算、云服务领域最新的市场资讯。
汇集软件频道每周精华内容,让您在最短的时间内,以最便捷的方式获取权威的企业软件新闻,SOA,SaaS,BI,ERP,开源技术,产品,技巧等全方面的实用资讯。还犹豫什么,这就开始体验一下吧!
深入、专业关注大数据相关的技术与实践,提供Hadoop、NoSQL等领域的最新技术资讯,定期发布由业界专家撰写的大数据专栏文章,面向企业CIO、IT经理、DBA提供深度原创报道,以及大数据领域的最新市场资讯。
汇集服务器频道每周精华内容,让您在最短的时间内,以最便捷的方式获取权威的服务器虚拟化,刀片服务器,操作系统,大型机,服务器芯片信息,最新最全的服务器技巧,购买指南,专家博客,皆汇聚在此。
网界网网络学院频道,内容涵盖移动互联,技术开发,Web前端,安全,网络通信,云计算,数据中心,存储,服务器,软件等内容。
订阅过的用户,全部取消选择,可取消订阅
热点排行周月
网络世界移动客户端网界网微信订阅号您所在的位置: &
OpenStack All in One
OpenStack All in One
Jerry_Baby
Jerry_Baby的博客
本文主要讲解Openstack基本组件安装,希望对大家的学习有所帮助。
系统环境:ubuntu-server-14.04
网络环境:VMware Nat eth0 192.168.149.130
配置密码:为了便于管理,所有服务密码均配置为openstack
一、数据库
#&apt-get&install&python-mysqldb&mysql-server&
修改 /etc/f&
[mysqld] && &bind-address&=&127.0.0.1&#&ip&地址全部使用本机 &default-storage-engine&=&innodb&#设置默认存储引擎为&Innodb &innodb_file_per_table &collation-server&=&utf8_general_ci&#设置编码格式 &init-connect&=&'SET&NAMES&utf8'&character-set-server&=&utf8&
c) 重启 mysql 服务,使用安全模式初始化数据库,删除匿名用户
#&service&mysql&restart &#&mysql_secure_installation&或&#&mysql_install_db&&
二、软件包配置
a) 安装 OpenStack Havana Ubuntu 云档案
#&apt-get&install&python-software-properties &#&add-apt-repository&cloud-archive:Havana&
b) 更新软件包数据库,更新系统
#&apt-get&update&&&&apt-get&dist-upgrade &#&reboot&
三、消息服务
消息服务使用 rabbitmq
#&apt-get&install&rabbitmq-server&
注:rabbitmq默认提供一个guest用户和默认的guest密码,这里需要修改一下guest用户的密码,因为后面配置nova服务的时候需要用到rabbitmq密码
#&rabbitmqctl&change_password&guest&openstack&
四、Keystone认证服务
#&apt-get&install&keystone&
1) 修改数据库连接方式,编辑配置文件/etc/keystone/keystone.conf
... &[sql] &#&The&SQLAlchemy&connection&string&used&to&connect&to&the&database &connection&=&mysql://keystone:openstack@127.0.0.1/keystone &...&
2) 删除默认创建的数据库
rm&&style=&line-height:&1.5;&font-size:&9&&f&/var/lib/keystone/keystone.db&
3) 创建数据库
#&mysql&-u&root&-p &mysql&CREATE&DATABASE& &mysql&GRANT&ALL&PRIVILEGES&ON&keystone.*&TO&'keystone'@'localhost'&\ &IDENTIFIED&BY&'openstack'; &mysql&GRANT&ALL&PRIVILEGES&ON&keystone.*&TO&'keystone'@'%'&\ &IDENTIFIED&BY&'openstack';&
4) 创建数据表
#&keystone-manage&db_sync&
5) 创建一个随机的 Token用于连接认证服务时使用
#&openssl&rand&-hex&10&&/root/token&#后面还会用到所以可以保存起来&&
编辑 /etc/keystone/keyston.conf
[DEFAULT] &#&A&&shared&secret&&between&keystone&and&other&openstack&services &admin_token&=&ADMIN_TOKEN&...&
6) 重启服务
#&service&keystone&restart&
c) 创建租户(tenant)、用户(user)、角色(role)
在还没有创建任何用户之前,我们必须要使用token来进行认证,可以将token设置为环境变量,或者在使用keystone命令的时候使用 &os-token 命令来指定token。
这里设置为环境变量:
#&export&OS_SERVICE_TOKEN=ADMIN_TOKEN&#&export&OS_SERVICE_ENDPOINT=http://127.0.0.1:3&
1) 创建租户admin和service
#&keystone&tenant-create&--name=admin&--description=&Admin&Tenant&&
#&keystone&tenant-create&--name=service&--description=&Service&Tenant&&
2) 创建用户admin
#keystone&user-create&--name=admin&--pass=openstack&--email=admin@localhost&
#&keystone&role-create&--name=admin&
3) 为admin创建role
4) 关联 user、tenant和role
#&keystone&user-role-add&--user=admin&--tenant=admin&--role=admin&
d) 创建服务(service)和访问端点(endpoint)
1) 创建keystone服务,类型为identity(认证)
#&keystone&service-create&--name=keystone&--type=identity&--description=&Keystone&Identity&Service&&
2) 使用上面返回的service id来创建服务的访问端点
#&keystone&endpoint-create&\ &--service-id=the_service_id_above\ &--publicurl=http://127.0.0.1:&\ &--internalurl=http://127.0.0.1:&\ &--adminurl=http://127.0.0.1:3&
e) 校验keystone服务
现在已经创建了admin用户,所以可以通过admin用户来访问keystone服务
$&unset&OS_SERVICE_TOKEN&OS_SERVICE_ENDPOINT &$&keystone&--os-username=admin&--os-password=openstack&--os-auth-url=http://127.0.0.1:3&token-get&
为了避免每次都需要输入用户名和密码,可以将它们保存为环境变量。编辑 /root/keystone.sh
export&OS_USERNAME=admin&export&OS_PASSWORD=openstack&export&OS_TENANT_NAME=admin&export&OS_AUTH_URL=http://127.0.0.1:3&
这样只要执行 # source keystone.sh 命令就可以连接keystone了
五、镜像服务&glance
#&apt-get&install&glance&python-glanceclient&
1) 设置数据库连接
编辑配置文件/etc/glance/glance-api.conf和/etc/glance/glance-registry.conf
... &[DEFAULT] &... &#&SQLAlchemy&connection&string&for&the&reference&implementation &#&registry&server.&Any&valid&SQLAlchemy&connection&string&is&fine. &#&See:&http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections. &html#sqlalchemy.create_engine &sql_connection&=&mysql://glance:openstack@127.0.0.1/glance &...&
2) 创建数据库
#&mysql&-u&root&-p &mysql&CREATE&DATABASE& &mysql&GRANT&ALL&PRIVILEGES&ON&glance.*&TO&'glance'@'localhost'&\ &IDENTIFIED&BY&'openstack'; &mysql&GRANT&ALL&PRIVILEGES&ON&glance.*&TO&'glance'@'%'&\ &IDENTIFIED&BY&'openstack';&
3) 创建数据表
#&glance-manage&db_sync&
4) 创建glance用户并关联到角色
#&keystone&user-create&--name=glance&--pass=openstack&--email=glance@localhost&
#&keystone&user-role-add&--user=glance&--tenant=service&--role=admin&
5) 配置glance服务使用keystone来进行认证
编辑/etc/glance/glance-api.conf和/etc/glance/glance-registry.conf文件
[keystone_authtoken] &... &auth_uri&=&http://127.0.0.1:5000 &auth_host&=&127.0.0.1 &auth_port&=&35357&auth_protocol&=&http&admin_tenant_name&=&service&admin_user&=&glance&admin_password&=&openstack&... &[paste_deploy] &... &flavor&=&keystone&
6) 添加认证信息到/etc/glance/glance-api-paste.ini和/etc/glance/glance-registry-paste.ini文件
[filter:authtoken] &paste.filter_factory=keystoneclient.middleware.auth_token:filter_factory &auth_host=127.0.0.1 &admin_user=glance&admin_tenant_name=service&admin_password=openstack&
7) 注册镜像服务
#&keystone&service-create&--name=glance&--type=image&--description=&Glance&Image&Service&&
8) 使用上面返回的service id创建访问点
#&keystone&endpoint-create&\ &--service-id=the_service_id_above&\ &--publicurl=http://127.0.0.1:9292&\ &--internalurl=http://127.0.0.1:9292&\ &--adminurl=http://127.0.0.1:9292&
9) 重启镜像服务
#&service&glance-registry&restart &#&service&glance-api&restart&
c) 创建镜像文件
CirrOS镜像是常用的一个qcow2类型的镜像,下载镜像并上传到glance服务器
$&mkdir&images &$&cd&images/ &$&wget&http://cdn.download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img &#&glance&image-create&--name=&CirrOS&0.3.1&&--disk-format=qcow2&--container-format=bare&--is-public=true&&&
查看上传的镜像可以使用
#&glance&image-list&
六、计算服务
a) 安装计算服务软件包
#&apt-get&install&nova-novncproxy&novnc&nova-api&nova-ajax-console-proxy&nova-cert&nova-conductor&nova-consoleauth&nova-doc&nova-scheduler&python-novaclient &#&apt-get&install&nova-compute-kvm&python-guestfs&
修改内核bug
#&dpkg-statoverride&--update&--add&root&root&0644&/boot/vmlinuz-$(uname&-r)&
#&vim&/etc/kernel/postinst.d/statoverride&
#!/bin/sh &version=&$1&&#&passing&the&kernel&version&is&required &[&-z&&${version}&&]&&&&exit&0 &dpkg-statoverride&--update&--add&root&root&0644&/boot/vmlinuz-${version}&
#&chmod&+x&/etc/kernel/postinst.d/statoverride&
1) 配置数据库
编辑配置文件 /etc/nova/nova.conf
... &[database] &#&The&SQLAlchemy&connection&string&used&to&connect&to&the&database &connection&=&mysql://nova:openstack@127.0.0.1/nova &[keystone_authtoken] &auth_host&=&127.0.0.1 &auth_port&=&35357&auth_protocol&=&http&admin_tenant_name&=&service&admin_user&=&nova&admin_password&=&openstack&
2) 配置计算服务使用rabbitmq消息队列传送信息
编辑配置文件 /etc/nova/nova.conf
... &[DEFAULT] &rpc_backend&=&nova.rpc.impl_kombu &rabbit_host&=&127.0.0.1 &rabbit_password&=&openstack&#&如果rabbitmq未改,则使用默认guest密码 &...&
3) 创建数据库
#&mysql&-u&root&-p &mysql&CREATE&DATABASE& &mysql&GRANT&ALL&PRIVILEGES&ON&nova.*&TO&'nova'@'localhost'&IDENTIFIED&BY&'openstack'; &mysql&GRANT&ALL&PRIVILEGES&ON&nova.*&TO&'nova'@'%'&IDENTIFIED&BY&'openstack';&
4) 创建数据表
#&nova-manage&db&sync&
5) 开启远程访问控制支持
编辑配置文件 /etc/nova/nova.conf
... &[DEFAULT] &... &my_ip=127.0.0.1 &vnc_enabled=True&vncserver_listen=127.0.0.1 &vncserver_proxyclient_address=127.0.0.1 &novncproxy_base_url=http://127.0.0.1:6080/vnc_auto.html&
6) 创建nova用户
#&keystone&user-create&--name=nova&--pass=openstack&--email=nova@localhost&
#&keystone&user-role-add&--user=nova&--tenant=service&--role=admin&
7) 配置nova使用keystone认证并配置glance服务
编辑配置文件 /etc/nova/nova.conf
[DEFAULT] &... &auth_strategy=keystone&glance_host=127.0.0.1&
8) 添加认证信息到/etc/nova/api-paste.ini文件
[filter:authtoken] &paste.filter_factory&=&keystoneclient.middleware.auth_token:filter_factory &auth_host&=&127.0.0.1 &auth_port&=&35357&auth_protocol&=&http&auth_uri&=&http://127.0.0.1: &admin_tenant_name&=&service&admin_user&=&nova&admin_password&=&openstack&
9) 创建计算服务和访问点
keystone&service-create&--name=nova&--type=compute&--description=&Nova&Compute&service&&
#&keystone&endpoint-create&--service-id=the_service_id_above&\ &--publicurl=http://127.0.0.1:8774/v2/%\(tenant_id\)s&\ &--internalurl=http://127.0.0.1:8774/v2/%\(tenant_id\)s&\ &--adminurl=http://127.0.0.1:8774/v2/%\(tenant_id\)s&
10) 重启计算服务
#&service&nova-api&restart &#&service&nova-cert&restart &#&service&nova-consoleauth&restart &#&service&nova-scheduler&restart &#&service&nova-conductor&restart &#&service&nova-novncproxy&restart &#&service&nova-compute&restart&
11) 配置网络
#&apt-get&install&nova-network&nova-api-metadata&
编辑配置文件 /etc/nova/nova.conf
[DEFAULT] &... &network_manager&=&nova.network.manager.FlatDHCPManager &firewall_driver&=&nova.virt.libvirt.firewall.IptablesFirewallDriver &network_size&=&254&allow_same_net_traffic&=&False&multi_host&=&True&send_arp_for_ha&=&True&share_dhcp_address&=&True&force_dhcp_release&=&True&flat_network_bridge&=&br100&flat_interface&=&eth1&public_interface&=&eth1&
#&service&nova-network&restart&
注:安装完成网络服务之后,需要重新安装nova-api软件,否则nova-api服务无法启动
#&apt-get&install&nova-api&
创建虚拟网络用于分配给虚拟机实例
#&nova&network-create&vmnet&--fixed-range-v4=10.0.0.0/24&--bridge=br100&--multi-host=T&
七、载入实例
a) 配置认证服务
$&ssh-keygen &$&cd&.ssh &$&nova&keypair-add&--pub_key&id_rsa.pub&mykey&
b) 添加ssh和ping服务
#&nova&secgroup-add-rule&default&tcp&22&22&0.0.0.0/0&
#&nova&secgroup-add-rule&default&icmp&-1&-1&0.0.0.0/0&
c) 查看镜像
$&nova&image-list&
d) 查看flavor列表
$&nova&flavor-list&
e) 创建虚拟机实例
$&nova&boot&--flavor&1&--key_name&mykey&&image&IMAGE_ID&--security_group&default&cirrOS&
f) 查看实例
$&nova&list&
g) 连接到实例
$&ssh&cirros@10.0.0.3&
h) vnc连接
在命令行执行 # nova get-vnc&console cirrOS novnc 命令,nova会返回一个vnc连接地址,将此地址复制到浏览器的地址栏内,可以通过vnc方式访问虚拟机
八、安装dashboard
首先安装apache-httpd服务器
#&apt-get&install&apache2&
然后安装dashboard
#&apt-get&install&memcached&libapache2-mod-wsgi&openstack-dashboard&
dashboard安装完成之后,使用默认的配置即可访问
注:kvm不支持嵌套虚拟化,openstack默认使用的Hypervisor是kvm,需要修改配置文件 /etc/nova/nova-compute 文件
compute_driver=libvirt.LibvirtDriver &libvirt_type=kvm&将kvm改为qemu&
原文链接:【编辑推荐】【责任编辑: TEL:(010)】
关于的更多文章
OpenStack是一个NASA和Rackspace合作研发的开源项目,旨在为公共
Linux界极具活力,面向不同的用户可以使用不同的Linux发行版,比如适合新手和游戏爱好者等。
讲师: 5人学习过讲师: 8人学习过讲师: 275人学习过
本周四有消息传出:红帽和CentOS宣布,CentOS核心团队
Fedora是基于Linux的一个开放操作系统和平台,由全球
俗话说:“年怕中秋月怕半,星期就怕礼拜三”,这周的
针对Ajax技术的日益流行,本书对Ajax技术的典型应用进行了归纳总结,基本上覆盖了Ajax技术应用的典型场景。书中共有45个实例,分
51CTO旗下网站您所在的位置: &
干货:基于网易的OpenStack部署运维实战
干货:基于网易的OpenStack部署运维实战
张晓龙,王盼,管强,高田田
developerworks中国
本文为您介绍了网易公司基于 OpenStack 开发的一套云计算管理平台,以及在开发、运营、维护过程中遇到的问题和经验分享。网易作为大型互联网公司,IT 基础架构需要支撑包括生产、开发、测试、管理等多方面的需要,而且需求和请求的变化几乎每天都存在,这就需要内部的 IT 基础架构能够足够灵活和健壮来满足各部门和团队的实际需要。网易私有云平台团队也希望通过本文和广大的 OpenStack 使用者进行一个交流,分享他们在实际项目中收获的成果。
OpenStack 简介
OpenStack 是一个开源的 IaaS 实现,它由一些相互关联的子项目组成,主要包括计算、存储、网络。由于以 Apache 协议发布,自 2010 年项目成立以来,超过 200 个公司加入了 OpenStack 项目,其中包括 AT&T、AMD、Cisco、Dell、IBM、Intel、Red Hat 等。目前参与 OpenStack 项目的开发人员有 17,000+,来自 139 个国家,这一数字还在不断增长中。
OpenStack 兼容一部分 AWS 接口,同时为了提供更强大的功能,也提供 OpenStack 风格的接口(RESTFul API)。和其他开源 IaaS 相比,架构上松耦合、高可扩展、分布式、纯 Python 实现,以及友好活跃的社区使其大受欢迎,每半年一次的开发峰会也吸引了来自全世界的开发者、供应商和客户。
OpenStack 的主要子项目有:
Compute(Nova)提供计算虚拟化服务,是 OpenStack 的核心,负责管理和创建虚拟机。它被设计成方便扩展,支持多种虚拟化技术,并且可以部署在标准硬件上。
Object Storage(Swift)提供对象存储服务,是一个分布式,可扩展,多副本的存储系统。
Block Storage(Cinder),提供块存储服务,为 OpenStack 的虚拟机提供持久的块级存储设备。支持多种存储后端,包括 Ceph,EMC 等。
Networking(Neutron)提供网络虚拟化服务,是一个可拔插,可扩展,API 驱动的服务。
Dashboard 提供了一个图形控制台服务,让用户方便地访问,使用和维护 OpenStack 中的资源。
Image(glance)提供镜像服务,它旨在发现,注册和交付虚拟机磁盘和镜像。支持多种后端。
Telemetry(Ceilometer)提供用量统计服务,通过它可以方便地实现 OpenStack 计费功能。
Orchestration(Heat)整合了 OpenStack 中的众多组件,类似 AWS 的 CloudFormation,让用户能够通过模板来管理资源。
Database(Trove)基于 OpenStack 构建的 database-as-a-service。
网易私有云使用了 Nova、Glance、Keystone、Neutron 这 4 个组件。
网易私有云平台概况
498)this.width=498;' onmousewheel = 'javascript:return big(this)' style="width: 567px" alt="图 1.网易私有云架构" width="615" height="359" src="/wyfs02/M02/47/86/wKioL1P7_cORxCfPAACuLfcgcWM066.jpg" />
图 1.网易私有云架构
网易私有云平台由网易杭州研究院负责研发,主要提供基础设施资源、数据存储处理、应用开发部署、运维管理等功能以满足公司产品测试/上线的需求。
图 1 展示了网易私有云平台的整体架构。整个私有云平台可分为三大类服务:核心基础设施服务(IaaS)、基础平台服务(PaaS)以及运维管理支撑服务,目前 一共包括了:云主机(虚拟机)、云网络、云硬盘、对象存储、对象缓存、关系型数据库、分布式数据库、全文检索、消息队列、视频转码、负载均衡、容器引擎、 云计费、云监控、管理平台等 15 个服务。网易私有云平台充分利用云计算开源的最新成果,我们基于 OpenStack 社区的 keystone、glance、nova、neutron 组件研发部署了云主机和云网络服务。
为了与网易私有云平台其他服务(云硬盘、 云监控、云计费等)深度整合以及满足公司产品使用和运维管理的特定需求,我们团队在社区 OpenStack 版本的基础上独立研发了包括:云主机资源质量保障(计算、存储、网络 QoS)、镜像分块存储、云主机心跳上报、flat-dhcp 模式下租户内网隔离等 20 多个新功能。同时,我们团队在日常运维 OpenStack 以及升级社区新版本中,也总结了一些部署、运维规范以及升级经验。两年多来,网易私有云平台 OpenStack 团队的研发秉承开源、开放的理念,始终遵循&来源社区,回馈社区&的原则。在免费享受 OpenStack 社区不断研发新功能以及修复 bug 的同时,我们团队也积极向社区做自己的贡献,从而帮助 OpenStack 社区的发展壮大。两年来,我们团队一共向社区提交新功能开发/bug 修复的 commits 近 100 个,修复社区 bug 50 多个,这些社区贡献涉及 OpenStack 的 Essex、Folsom、Havana、Icehouse、Juno 等版本。
得益于 OpenStack 的日益稳定成熟,私有云平台目前已经稳定运行了 2 年多时间,为网易公司多达 30 个互联网和游戏产品提供服务。从应用的效果来看,基于 OpenStack 研发的网易私有云平台已经达到了以下目标:
提高了公司基础设施资源利用率,从而降低了硬件成本。以物理服务器 CPU 利用率为例,私有云平台将 CPU 平均利用率从不到 10% 提升到 50%。
提高了基础设施资源管理与运维自动化水平,从而降低了运维成本。借助于 Web 自助式的资源申请和分配方式以及云平台自动部署服务,系统运维人员减少了 50%。
提高了基础设施资源使用弹性,从而增强了产品业务波动的适应能力。利用虚拟化技术将物理基础设施做成虚拟资源池,通过有效的容量规划以及按需使用,私有云平台可以很好适应产品突发业务。
网易 OpenStack 部署参考方案介绍
在具体的生产环境中,我们为了兼顾性能和可靠性,keystone 后端使用 Mysql 存储用户信息,使用 memcache 存放 token。为了减少对 keystone 的访问压力,所有服务(nova,glance,neutron)的 keystoneclient 均配置使用 memcache 作为 token 的缓存。
由于网易私有云需要部署在多个机房之中,每个机房之间在地理位置上自然隔离,这对上层的应用来说是天然的容灾方法。另外,为了满足私有云的功能和运维需 求,网易私有云需要同时支持两种网络模式:nova-network 和 neutron。针对这些需求,我们提出了一个面向企业级的多区域部署方案,如图 2 所示。从整体上看,多个区域之间的部署相对独立,但可通过内网实现互通,每个区域中包括了一个完整的 OpenStack 部署,所以可以使用独立的镜像服务和独立的网络模式,例如区域 A 使用 nova-network,区域 B 使用 neutron,互不影响,另外为了实现用户的单点登录,区域之间共享了 keystone,区域的划分依据主要是网络模式和地理位置。
498)this.width=498;' onmousewheel = 'javascript:return big(this)' style="width: 549px" alt="图 2.多区域部署方法" width="577" height="331" src="/wyfs02/M02/47/85/wKiom1P7_KvQnLTsAABkgVg8sbg544.jpg" />
图 2.多区域部署方法
和典型 OpenStack 部署将硬件划分为计算节点和控制节点不同的是,为了充分利用硬件资源,我们努力把部署设计成对称的,即任意一个节点下线对整体服务不会照成影响。因此我们 将硬件分为两类:计算节点,控制计算节点。计算节点部署 nova-network,nova-compute,nova-api-metadata,nova-api-os-compute。控制计算节点除了 计算节点的服务外还部署了 nova-scheduler,nova-novncproxy,nova-consoleauth,glance-api,glance- registry 和 keystone,如图 3 所示。
对外提供 API 的服务有 nova-api-os-compute,nova-novncproxy ,glance-api,keystone。这类服务的特点是无状态,可以方便地横向扩展,故此类服务均部署在负载均衡 HAProxy 之后,并且使用 Keepalived 做高可用。为了保证服务质量和便于维护,我们没有使用 nova-api,而是分为 nova-api-os-compute 和 nova-api-metadata 分别管理。外部依赖方面,网易私有云部署了高可用 RabbitMQ 集群和主备 MySQL,以及 memcache 集群。
498)this.width=498;' onmousewheel = 'javascript:return big(this)' style="width: 528px" alt="图 3.计算节点,控制计算节点" width="558" height="344" src="/wyfs02/M01/47/86/wKioL1P7_cOBJgfcAABqqQjgUrU109.jpg" />
图 3.计算节点,控制计算节点
网络规划方面,网易私有云主要使用 nova-network 的 FlatDHCPManager+multi-host 网络模式,并划分了多个 Vlan,分别用于虚拟机 fixed-ip 网络、内网浮动 IP 网络、外网网络。
运维上使用网易自主研发的运维平台做监控和报警,功能类似 Nagios,但是更加强大。其中较重要的监控报警包括日志监控和进程监控。日志监控保证服务发生异常时第一时间发现,进程监控保证服务正常运行。另外网易私有云使用 Puppet 做自动部署,以及使用 StackTach 帮助定位 bug。
OpenStack 各组件配置
OpenStack Havana 的配置项成百上千,大部分配置项都是可以使用默认值的,否则光是理解这么多的配置项的含义就足以让运维人员崩溃,尤其是对那些并不熟悉源码的运维人员来说 更是如此。下文将列举若干网易私有云中较关键的配置项,并解释它们如何影响到服务的功能,安全性,以及性能等问题。
Nova 关键配置
my_ip = 内网地址
此项是用来生成宿主机上的 nova metadata api 请求转发 iptables 规则,如果配置不当,会导致虚拟机内部无法通过 169.254.169.254 这个 IP 获取 ec2/OpenStack metadata 信息;生成的 iptable 规则形如:
-A nova-network-PREROUTING -d 169.254.169.254/32 -p tcp -m tcp --dport 80 -j DNAT \--to-destination ${my_ip}:8775
它另外的用途是虚拟机在 resize、cold migrate 等操作时,与目的端宿主机进行数据通信。该项的默认值为宿主机的外网 IP 地址,建议改为内网地址以避免潜在的安全风险。
metadata_listen = 内网地址
此项是 nova-api-metadata 服务监听的 IP 地址,可以从上面的 iptables 规则里面看出它与 my_ip 的配置项有一定的关联,保持一致是最明智的选择。
novncproxy_base_url = vncserver_proxyclient_address = ${private_ip_of_compute_host}vncserver_listen = ${private_ip_of_compute_host}novncproxy_host = ${private_ip_of_host}
我们仅在部分节点上部署 novncproxy 进程,并把这些进程加入到 HAProxy 服务中实现 novnc 代理进程的高可用,多个 HAProxy 进程使用 Keepalived 实施 HAProxy 的高可用,对外只需要暴露 Keepalived 管理的虚拟 IP 地址即可:
这种部署方式好处是:
1)实现 novnc 代理服务的高可用
2)不会暴露云平台相关节点的外网地址
3)易于 novnc 代理服务的扩容
但也有不足:
1)虚拟机都监听在其所在的计算节点的内网 IP 地址,一旦虚拟机与宿主机的网络隔离出现问题,会导致所有虚拟机的 VNC 地址接口暴露出去
2)在线迁移时会遇到问题,因为 VNC 监听的内网 IP 在目的端计算节点是不存在的,不过这个问题 nova 社区已经在解决了,相信很快就会合入 J 版本。
resume_guests_state_on_host_boot = true
在 nova-compute 进程启动时,启动应该处于运行状态的虚拟机,应该处于运行状态的意思是 nova 数据库中的虚拟机记录是运行状态,但在 Hypervisor 上该虚拟机没有运行,在计算节点重启时,该配置项具有很大的用处,它可以让节点上所有虚拟机都自动运行起来,节省运维人员手工处理的时间。
api_rate_limit = false
不限制 API 访问频率,打开之后 API 的并发访问数量会受到限制,可以根据云平台的访问量及 API 进程的数量和承受能力来判断是否需要打开,如果关闭该选项,则大并发情况下 API 请求处理时间会比较久。
osapi_max_limit = 5000
nova-api-os-compute api 的最大返回数据长度限制,如果设置过短,会导致部分响应数据被截断。
scheduler_default_filters = RetryFilter, AvailabilityZoneFilter, RamFilter, ComputeFilter, ImagePropertiesFilter, JsonFilter, EcuFilter, CoreFilter
nova-scheduler 可用的过滤器,Retry 是用来跳过已经尝试创建但是失败的计算节点,防止重调度死循环;AvailabilityZone 是过滤那些用户指定的 AZ 的,防止用户的虚拟机创建到未指定的 AZ 里面;Ram 是过滤掉内存不足的计算节点;Core 是过滤掉 VCPU 数量不足的计算节点;Ecu 是我们自己开发的过滤器,配合我们的 CPU QoS 功能开发的,用来过滤掉 ecu 数量不足的计算节点;ImageProperties 是过滤掉不符合镜像要求的计算节点,比如 QEMU 虚拟机所用的镜像不能在 LXC 计算节点上使用;Json 是匹配自定义的节点选择规则,比如不可以创建到某些 AZ,要与那些虚拟机创建到相同 AZ 等。其他还有一些过滤器可以根据需求进行选择。
running_deleted_instance_action = reap
nova-compute 定时任务发现在数据库中已经删除,但计算节点的 Hypervisor 中还存在的虚拟机(也即野虚拟机审计操作方式)后的处理动作,建议是选择 log 或者 reap。log 方式需要运维人员根据日志记录找到那些野虚拟机并手工执行后续的动作,这种方式比较保险,防止由于 nova 服务出现未知异常或者 bug 时导致用户虚拟机被清理掉等问题,而 reap 方式则可以节省运维人员的人工介入时间。
until_refresh = 5
用户配额与 instances 表中实际使用量的同步阈值,也即用户的配额被修改多少次后强制同步一次使用量到配额量记录
max_age = 86400
用户配额与实际使用量的同步时间间隔,也即距上次配额记录更新多少秒后,再次更新时会自动与实际使用量同步。
众所周知,开源的 nova 项目目前仍然有很多配额方面的 bug 没有解决,上面两个配置项可以在很大程度上解决用户配额使用情况与实际使用量不匹配的问题,但也会带来一定的数据库性能开销,需要根据实际部署情况进行合理设置。
### 计算节点资源预留 ###
vcpu_pin_set = 4-$
虚拟机 vCPU 的绑定范围,可以防止虚拟机争抢宿主机进程的 CPU 资源,建议值是预留前几个物理 CPU,把后面的所有 CPU 分配给虚拟机使用,可以配合 cgroup 或者内核启动参数来实现宿主机进程不占用虚拟机使用的那些 CPU 资源。
cpu_allocation_ratio = 4.0
物理 CPU 超售比例,默认是 16 倍,超线程也算作一个物理 CPU,需要根据具体负载和物理 CPU 能力进行综合判断后确定具体的配置。
ram_allocation_ratio = 1.0
内存分配超售比例,默认是 1.5 倍,生产环境不建议开启超售。
reserved_host_memory_mb = 4096
内存预留量,这部分内存不能被虚拟机使用
reserved_host_disk_mb = 10240
磁盘预留空间,这部分空间不能被虚拟机使用
service_down_time = 120
服务下线时间阈值,如果一个节点上的 nova 服务超过这个时间没有上报心跳到数据库,api 服务会认为该服务已经下线,如果配置过短或过长,都会导致误判。
rpc_response_timeout = 300
RPC 调用超时时间,由于 Python 的单进程不能真正的并发,所以 RPC 请求可能不能及时响应,尤其是目标节点在执行耗时较长的定时任务时,所以需要综合考虑超时时间和等待容忍时间。
multi_host = True
是否开启 nova-network 的多节点模式,如果需要多节点部署,则该项需要设置为 True。
配置项较少,主要是要权衡配置什么样的后端驱动,来存储 token,一般是 SQL 数据库,也可以是 memcache。sql 可以持久化存储,而 memcache 则速度更快,尤其是当用户要更新密码的时候,需要删除所有过期的 token,这种情况下 SQL 的速度与 memcache 相差很大很大。
包括两个部分,glance-api 和 glance-registry,:
workers = 2
glance-api 处理请求的子进程数量,如果配置成 0,则只有一个主进程,相应的配置成 2,则有一个主进程加 2 个子进程来并发处理请求。建议根据进程所在的物理节点计算能力和云平台请求量来综合确定。
api_limit_max = 1000
与 nova 中的配置 osapi_max_limit 意义相同
limit_param_default = 1000
一个响应中最大返回项数,可以在请求参数中指定,默认是 25,如果设置过短,可能导致响应数据被截断。
OpenStack 底层依赖软件版本、配置以及性能调优
虚拟化技术选型
在私有云平台的体系架构中, OpenStack 依赖一些底层软件,如虚拟化软件,虚拟化管理软件和 Linux 内核。这些软件的稳定性以及性能关系着整个云平台的稳定性和性能。因此,这些软件的版本选择和配置调优也是网易私有云开发中的一个重要因素。
在网易私有云平台中,我们选用的是 Linux 内核兼容最好的 KVM 虚拟化技术。相对于 Xen 虚拟化技术,KVM 虚拟化技术与 Linux 内核联系更为紧密,更容易维护。选择 KVM 虚拟化技术后,虚拟化管理驱动采用了 OpenStack 社区为 KVM 配置的计算驱动 libvirt,这也是一套使用非常广泛,社区活跃度很高的一套开源虚拟化管理软件,支持 KVM 在内的各种虚拟化管理。
另一方面,网易采用开源的 Debian 作为自己的宿主机内核,源使用的是 Debian 的 wheezy 稳定分支,KVM 和 libvirt 采用的也是 Debian 社区 wheezy 源里面的包版本:
1.1.2+dfsg-6+deb7u3libvirt-bin
在内核的选型方面,我们主要考虑如下两方面的因素:
稳定性:在开发私有云平台的一开始,稳定性就是网易私有云开发的一大基本原则。我们采用 Debian Linux 版本,相对来说,Debian 的原生内核无疑更为稳定。这也是我们最开始的一个选择。
功能需求:在网易的定制开发中,为了保证虚拟机的服务性能,我们开发了 CPU QoS 技术和磁盘 QoS,它依赖底层的 CPU 和 blkio cgroup 支持。因此,我们需要打开内核中的 cgroup 配置选项。另一方面,网易私有云综合各方面考虑,将支持 LXC 这种容器级别的虚拟化,除了 cgroup 外,LXC 还依赖 Linux 内核中的 namespace 特性。
综合上述因素的考虑,我们选择了 Debian 社区的 Linux 3.10.40 内核源代码,并且打开了 CPU/mem/blkio 等 cgroup 配置选项以及 user namespace 等 namespace 选项,自己编译了一个适配网易私有云的 Linux 内核。从使用情况来看,选择上述版本的 OpenStack 底层依赖软件后,网易私有云运行还比较稳定,我们后续还会适时的对这些软件进行更新。
在网易私有云的稳定性得到了保障之后,我们开始了性能方面的调优工作。这一方面,我们参考了 IBM 公司的一些,在 CPU、内存、I/O 等方面做了一些配置方面的优化。整体而言,网易私有云在注重稳定性的基础上,也会积极借鉴业界优秀实践来优化私有云平台的整体性能。
CPU 配置优化
为了保障云主机的计算能力,网易私有云开发了 CPU QoS 技术,具体来说就是采用 cfs 的时间片均匀调度,外加 process pinning 的绑定技术。
参考 IBM 的分析,我们了解到了 process pinning 技术的优缺点,并且经过测试也验证了不同绑定方式的云主机间的性能存在较大的差异。比如,2 个 VCPU 分别绑定到不同 numa 节点的非超线程核上和分配到一对相邻的超线程核上的性能相差有 30%~40%(通过 SPEC CPU2006 工具测试)。另一方面,CPU0 由于处理中断请求,本身负荷就较重,不宜再用于云主机。因此,综合上面的因素考虑以及多轮的测试验证,我们最终决定将 0-3 号 CPU 预留出来,然后让云主机在剩余的 CPU 资源中由宿主机内核去调度。最终的 CPU 配置如下所示(libvirt xml 配置):
placement='static' cpuset='4-23'1
内存配置优化
内存配置方面,网易私有云的实践是关闭 KVM 内存共享,打开透明大页:
echo 0 & /sys/kernel/mm/ksm/pages_sharedecho 0 & /sys/kernel/mm/ksm/pages_sharingecho always & /sys/kernel/mm/transparent_hugepage/enabledecho never & /sys/kernel/mm/transparent_hugepage/defragecho 0 & /sys/kernel/mm/transparent_hugepage/khugepaged/defrag
经过 SPEC CPU2006 测试,这些配置对云主机 CPU 性能大概有 7%左右的提升。
I/O 配置优化
1)磁盘 I/O 的配置优化主要包含如下方面:
KVM 的 disk cache 方式:借鉴 IBM 的分析,网易私有云采用 none 这种 cache 方式。
disk io scheduler:目前网易私有云的宿主机磁盘调度策略选用的是 cfq。在实际使用过程中,我们发现 cfq 的调度策略,对那些地低配置磁盘很容易出现 I/O 调度队列过长,utils 100% 的问题。后续网易私有云也会借鉴 IBM 的实践,对 cfq 进行参数调优,以及测试 deadline 调度策略。
磁盘 I/O QoS:面对日渐突出的磁盘 I/O 资源紧缺问题,网易私有云开发了磁盘 I/O QoS,主要是基于 blkio cgroup 来设置其 throttle 参数来实现。由于 libvirt-0.9.12 版本是在 QEMU 中限制磁盘 I/O,并且存在波动问题,所以我们的实现是通过 Nova 执行命令方式写入到 cgroup 中。同时我们也开发并向 libvirt 社区提交了 blkiotune 的 throttle 接口设置 patch(已在 libvirt-1.2.2 版本中合入)来彻底解决这个问题。
2)网络 I/O 的配置优化
我们主要是开启了 vhost_net 模式,来减少网络延时和增加吞吐量。
开 源软件 bug 在所难免,但是新版本比旧版本会好用很多,尤其是对于 OpenStack 这种正在迅速成长壮大的开源软件来说更是如此,这一点在我们使用过 Essex、Folsom 和 Havana 版本后深有体会,所以建议各种 OpenStack 用户能及时的跟进社区版本,与社区保持同步。
不要轻易的对社区版本进行各类所谓的功能性能方面的&优化&,尤其是 在没有与社区专家交换意见之前,千万不要轻易下手,否则此类&优化&极有可能演变成故障点或者性能瓶颈点,最终可能导致无法与社区同步,毕竟一个公司或团 队(尤其是小公司、小团队)的能力和知识储备,是很难与社区成百上千的各类专家相提并论的。
多参考各类大型公司分享的部署架构方案,尽量不要自己闭门造车,尤其是对于开源软件来说,各类公司、团队的使用场景千差万别,各种周边组件也是应有尽有,多参考业界实践是最好的方式。
一些细节实现可能有很多途径,但每种方式都有优缺点,需要经过充分的论证、分析、测试验证后,才能考虑部署到生产环境使用。
所有的部署方案、功能设计都要考虑到平滑升级问题,即使你得到的信息是升级时可以停服,仍然要尽量避免这种情况,因为停服的影响范围很难界定。
OpenStack 也是一个后端系统服务,所有系统运维相关的基本准则都适用,这里简单的提几点实际运维过程中根据遇到的问题总结的一些经验:
配置项默认值与实际环境不匹配可能导致各种问题,尤其是网络相关配置与硬件有很强的关联性,生产环境和开发环境硬件异构,导致部分默认值在生产环境不适用。应对准则:每个版本都必须在与线上硬件相同的环境测试过才能上线。
做好容量规划,已分配的配额量要小于云平台总容量,否则会出现各种问题,导致运维开发耗费很多不必要的精力去定位分析问题。
配置项过多容易出错,需要与开发人员一起仔细核对,上线时首先要通过 puppet 的 noop 功能验证改动是否正确后,才能真正上线。
网络规划要提前做好,如固定 IP、浮动 IP、VLAN 数量等,网络扩容难度和风险都比较大,所以提前规划好是最保险的,一个原则是大比小好,多比少好。
网络隔离要做好,否则用户网络安全没办法保证。
信息安全问题要重视,这个是老生常谈的问题了,每个平台都有相同问题,但还是要重视再重视,一旦出现安全漏洞,所有虚拟机都面临严重威胁。
原文链接:
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&的更多文章
运维人,不论你是做技术运维、安全运维,还是系统运维、应用运维
Linux界极具活力,面向不同的用户可以使用不同的Linux发行版,比如适合新手和游戏爱好者等。
讲师: 12人学习过讲师: 2人学习过讲师: 25人学习过
日前,中国政府采购网发布《关于进行信息类协议供货强
Windows Server 2012 R2 自发布后,就有很多朋友已经
本专题整理了日常运维的故障处理方法和技巧。从故障分
本书全面阐述Java应用安全的基本知识并介绍一种强大的结构化安全设计方法;介绍独立于厂商的安全架构;列出详细的评估核对表以及
51CTO旗下网站

我要回帖

更多关于 aws ec2 ssh 的文章

 

随机推荐