一、云计算
云计算特点:必须通过网络使用;弹性计算(按需付费);对用户是透明的(用户不考虑后端的具体实现);
云计算分类:私有云、公有云(amazon是老大、aliyun、tingyun、tencentyun)、混合云;
云计算分层:
Iaas(infrastructure as a service):基础架构即服务,服务器、虚拟机、网络等设备资源
Paas(platform as a service):平台即服务,web中间件、数据库等集成的系统平台
SaaS(software as a service);软件即服务,电子邮件、杀毒、网盘等软件服务
二、OpenStack
1、简介
OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。
OpenStack是一套Iaas解决方案
2、组件
openstack三大核心组件:
nova(coumpute service计算服务);是一套控制器,用于为用户管理虚拟机实例,配置硬件规格、
neutron(networking service网络服务);提供网络虚拟化技术,创建虚拟网络、隔离网段的功能
cinder(block storage块存储);虚拟机添加硬盘,提供数据块存储服务
其它组件:
keystone(identity service认证服务);提供身份验证功能,
horizon(dashboard仪表板,web界面);提供web界面,管理各种服务
glance(image service镜像服务);支持多种虚拟机镜像格式,创建、删除、编辑镜像
Swift(Object Storage对象存储),适用于一次写入多次读取
Heat(Orchestration业务流程),提供通过模板定义部署方式,实现自动化部署
基础服务:
MySQL;rabbitmq(组件间通信的交通枢杻);
主要:
Nova 管理计算资源,是核心服务。
Neutron 管理网络资源,是核心服务。
Glance 为 VM 提供 OS 镜像,属于存储范畴,是核心服务。
Cinder 提供块存储,VM怎么也得需要数据盘吧,是核心服务。
Swift 提供对象存储,不是必须的,是可选服务。
Keystone 认证服务,没它 OpenStack 转不起来,是核心服务。
Ceilometer 监控服务,不是必须的,可选服务。
Horizon 大家都需要一个操作界面吧。
三、部署OpenStack
基础环境:
node1.com 192.168.4.16 node2.com 192.168.4.17
统一更换主机名,hosts文件,关闭iptables、关闭Selinux、时间同步 centos yum 源 https://repos.fedorapeople.org/repos/openstack/EOL/openstack-icehouse/epel-6/
1、部署kvm
1、安装kvm yum install qemu-kvm qemu-kvm-tools virt-manager libvirt 管理工具: qemu-kvm qemu-kvm-tools 管理工具 虚拟机工具:virt-manager 其他工具:libvirt brctl show 2、创建桥接网卡 vim bridge.sh #!/bin/bash brctl addbr br0 brctl addif br0 eht0 ip addr del dev eth0 192.168.4.11/24 ifconfig br0 192.168.4.11/24 up route add default gw 192.168.4.1 或者 修改配置文件
2、部署mysql
1、安装mysql yum install mysql-server 2、修改配置文件 cp /usr/share/mysql/my-medium.cnf /etc/my.cnf vim /etc/my.cnf #在[mysqld]标签下配置 default-storage-engine = innodb 默认存储引擎innodb innodb_file_per_table 设置独享的表空间,如果不设置,会是共享表空间 collation-server = utf8_general_ci 校对规则 init-connect = 'SET NAMES utf8' 链接字符集 character-set-server = utf8 数据库建库字符集 max_connections = 4096 最大连接数 bind-address mysql监听地址 3、启动mysql /etc/init.d/mysqld start 4、创建数据库 创建keystone数据库并授权 mysql> create database keystone; mysql> grant all on keystone.* to keystone@'192.168.4.0/255.255.255.0' identified by 'keystone';
创建glance数据库并授权 mysql> create database glance; mysql> grant all on glance.* to glance@'192.168.4.0/255.255.255.0' identified by 'glance';
创建nova数据库并授权 mysql> create database nova; mysql> grant all on nova.* to nova@'192.168.4.0/255.255.255.0' identified by 'nova'; 创建neutron并授权 mysql> create database neutron; mysql> grant all on neutron.* to neutron@'192.168.4.0/255.255.255.0' identified by 'neutron'; 创建cinder并授权 mysql> create database cinder; mysql> grant all on cinder.* to cinder@'192.168.56.0/255.255.255.0' identified by 'cinder';
查看所有库
mysql>show databases
3、部署RabbitMQ
1、安装 rabbitmq yum install rabbitmq-server 2、启动服务 /etc/init.d/rabbitmq-server start #如果主机名不能解析,会导致启动不了。 3、安装web管理插件 /usr/lib/rabbitmq/bin/rabbitmq-plugins list #列出rabbitmq当前有哪些插件 /usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management #启用管理插件
rabbitmq监控的端口是5672,web管理端口是15672和55672。
4、部署KeyStone
yum install openstack-keystone python-keystoneclient
创建keystone需要使用的pki令牌
keystone-manage pki_setup --keystone-user keystone --keystone-group keystone
默认会生成“/etc/keystone/ssl/”证书目录及证书文件,此时需要设置目录的权限。
chown -R keystone:keystone /etc/keystone/ssl/
chmod -R o-rwx /etc/keystone/ssl/
配置keystone的admin_token
egrep -n "^[a-z]" /etc/keystone/keystone.conf 13:admin_token=ADMIN 619:connection=mysql://keystone:keystone@192.168.1.36/keystone
配置keystone之后,需要同步数据库,作用是建立keystone的表结构。
keystone-manage db_sync mysql -h 192.168.1.36 -u keystone -pkeystone -e "use keystone;show tables;"
配置keystone的Debug及日志功能
egrep -n '^[a-z]' /etc/keystone/keystone.conf 374:debug=true 439:log_file=/var/log/keystone/keystone.log
启动服务
chown -R keystone:keystone /var/log/keystone/* /etc/init.d/openstack-keystone start chkconfig openstack-keystone on
keystone监听的端口
netstat -lntup|egrep "35357|5000"
keystone的三大类命令
keystone --help|grep list keystone --help|grep create keystone --help|grep delete
定义admin_token变量
export OS_SERVICE_TOKEN=ADMIN export OS_SERVICE_ENDPOINT=http://192.168.1.36:35357/v2.0 keystone role-list
注册keystone用户
1、创建一个admin用户 keystone user-create --name=admin --pass=admin --email=admin@example.com keystone user-list 2、创建一个admin角色 keystone role-create --name=admin keystone role-list 3、创建一个admin租户 keystone tenant-create --name=admin --description="Admin Tenant" keystone tenan-list 4、添加用户角色并建立关系 keystone user-role-add --user=admin --tenant=admin --role=admin keystone user-role-list
项目用户
1、创建一个demo用户 keystone user-create --name=demo --pass=demo 2、创建一个demo租户 keystone tenant-create --name=demo --description="demo Tenant" 3、建立关系 keystone user-role-add --user=demo --role=_member_ --tenant=demo 4、创建一个service用户 keystone tenant-create --name=service 5、创建service和endpoint keystone service-create --name=keystone --type=identity keystone service-list keystone endpoint-create > --service-id=$(keystone service-list | awk '/ identity / {print $2}') > --publicurl=http://192.168.1.36:5000/v2.0 > --internalurl=http://192.168.1.36:5000/v2.0 > --adminurl=http://192.168.1.36:35357/v2.0 unset OS_SERVICE_TOKEN unset OS_SERVICE_ENDPOINT keystone --os-username=admin --os-password=admin --os-tenant-name=admin --os-auth-url=http://192.168.1.36:35357/v2.0 token-get keystone endpoint-list 在数据库里查到的结果
建立keystone环境变量文件(方便以后使用)
建立admin的环境变量
cat /root/keystone-admin export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=admin export OS_AUTH_URL=http://192.168.1.36:35357/v2.0
建立demo的环境变量
cat keystone-demo export OS_TENANT_NAME=demo export OS_USERNAME=demo export OS_PASSWORD=demo export OS_AUTH_URL=http://192.168.1.36:35357/v2.0
5、部署Glance
安装
yum install openstack-glance python-glanceclient python-crypto
配置
egrep -n '^[a-z]' glance-api.conf 43:log_file=/var/log/glance/api.log 564:connection=mysql://glance:glance@192.168.1.36/glance egrep -n '^[a-z]' glance-registry.conf 19:log_file=/var/log/glance/registry.log 94:connection=mysql://glance:glance@192.168.1.36/glance
同步数据库
glance-manage db_sync
mysql -h 192.168.1.36 -u glance -pglance -e"use glance;show tables;"
配置Glance的RabbitMQ
egrep -n '^[a-z]' glance-api.conf 232:notifier_strategy = rabbit 242:rabbit_host=192.168.1.36 243:rabbit_port=5672 244:rabbit_use_ssl=false 245:rabbit_userid=guest 246:rabbit_password=guest 247:rabbit_virtual_host=/ 248:rabbit_notification_exchange=glance 249:rabbit_notification_topic=notifications 250:rabbit_durable_queues=False
Glance连接到keystone进行认证
1、在keystone里创建Glance用户 source keystone-admin keystone user-create --name=glance --pass=glance 2、建立关系 keystone user-role-add --user=glance --tenant=service --role=admin
配置Glance的Keystone
egrep -n "^[a-z]" /etc/glance/glance-api.conf 645:auth_host=192.168.1.36 646:auth_port=35357 647:auth_protocol=http 648:admin_tenant_name=service 649:admin_user=glance 650:admin_password=glance 660:flavor=keystone egrep -n "^[a-z]" /etc/glance/glance-registry.conf 175:auth_host=192.168.1.36 176:auth_port=35357 177:auth_protocol=http 178:admin_tenant_name=service 179:admin_user=glance 180:admin_password=glance 190:flavor=keystone
创建service和endpoint
keystone service-create --name=glance --type=image keystone service-list keystone endpoint-create --service-id=$(keystone service-list | awk '/ image / {print $2}')
--publicurl=http://192.168.1.36:9292 --internalurl=http://192.168.1.36:9292 --adminurl=http://192.168.1.36:9292 keystone endpoint-list
启动服务
chown -R glance:glance /var/log/glance/ /etc/init.d/openstack-glance-api start /etc/init.d/openstack-glance-registry start
查看端口:
netstat -lntup|egrep '9191|9292'
#glance-api:9191端口
#glance-registry:9292端口
查看glance镜像:(glance才刚启动,所以下面没有镜像,但是能看到,说明启动正常)
glance image-list
下载镜像并注册
wget http://download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img glance image-create --name "cirros-0.3.2-x86_64" --disk-format qcow2 --container-format bare --is-public True --file cirros-0.3.2-x86_64-disk.img glance image-list
6、部署Nova
安装
yum install openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console
openstack-nova-novncproxy openstack-nova-scheduler python-novaclient
配置Nova
egrep -n '^[a-z]' nova.conf 2475:connection=mysql://nova:nova@192.168.1.36/nova
同步数据库
nova-manage db sync
mysql -h 192.168.1.36 -u nova -pnova -e"use nova;show tables;"
Nova配置RabbitMQ
egrep -n '^[a-z]' nova.conf 79:rabbit_host=192.168.1.36 83:rabbit_port=5672 89:rabbit_use_ssl=false 92:rabbit_userid=guest 95:rabbit_password=guest 189:rpc_backend=rabbit
Nova配置Keystone
添加Nova用户 source keystone-admin keystone user-create --name=nova --pass=nova keystone user-role-add --user=nova --tenant=service --role=admin keystone user-list
egrep -n '^[a-z]' nova.conf 544:auth_strategy=keystone 2687:auth_host=192.168.1.36 2690:auth_port=35357 2694:auth_protocol=http 2697:auth_uri=http://192.168.1.36:500 2701:auth_version=v2.0 2728:admin_user=nova 2731:admin_password=nova 2735:admin_tenant_name=service
Nova配置Glance
egrep -n '^[a-z]' nova.conf 253:my_ip=192.168.1.36 1129:glance_host=$my_ip
Nova自身配置
egrep -n '^[a-z]' nova.conf 302:state_path=/var/lib/nova 885:instances_path=$state_path/instances 1576:lock_path=/var/lib/nova/tmp 1951:compute_driver=libvirt.LibvirtDriver 2036:novncproxy_base_url=http://192.168.1.36:6080/vnc_auto.html 2044:vncserver_listen=0.0.0.0 2048:vncserver_proxyclient_address=192.168.1.36 2051:vnc_enabled=true 2054:vnc_keymap=en-us
Nova更改的全部配置
egrep -n '^[a-z]' nova.conf 79:rabbit_host=192.168.1.36 83:rabbit_port=5672 89:rabbit_use_ssl=false 92:rabbit_userid=guest 95:rabbit_password=guest 189:rpc_backend=rabbit 253:my_ip=192.168.1.36 302:state_path=/var/lib/nova 544:auth_strategy=keystone 885:instances_path=$state_path/instances 1129:glance_host=$my_ip 1576:lock_path=/var/lib/nova/tmp 1951:compute_driver=libvirt.LibvirtDriver 2036:novncproxy_base_url=http://192.168.1.36:6080/vnc_auto.html 2044:vncserver_listen=0.0.0.0 2048:vncserver_proxyclient_address=192.168.1.36 2051:vnc_enabled=true 2054:vnc_keymap=en-us 2475:connection=mysql://nova:nova@192.168.1.36/nova 2687:auth_host=192.168.1.36 2690:auth_port=35357 2694:auth_protocol=http 2697:auth_uri=http://192.168.1.36:500 2701:auth_version=v2.0 2728:admin_user=nova 2731:admin_password=nova 2735:admin_tenant_name=service
创建service和endpoint
source keystone-admin keystone service-create --name=nova --type=compute keystone endpoint-create --service-id=$(keystone service-list| awk ' / compute / {print $2}')
--publicurl=http://192.168.1.36:8774/v2/%(tenant_id)s --internalurl=http://192.168.1.36:8774/v2/%(tenant_id)s
--adminurl=http://192.168.1.36:8774/v2/%(tenant_id)s
启动服务
for i in {api,cert,conductor,consoleauth,novncproxy,scheduler};do service openstack-nova-"$i" start;done
nova host-list
部署计算节点
1、安装 yum install -y qemu-kvm libvirt openstack-nova-compute python-novaclient 2、查看系统是否支持KVM硬件虚拟化 egrep -c '(vmx|svm)' /proc/cpuinfo
若返回0,说明不支持,配置libvirt取代KVM来使用QEMU
修改 /etc/nova/nova.conf
virt_type=qemu 3、控制节点推送配置文件到计算节点 scp /etc/nova/nova.conf 192.168.1.37:/etc/nova/ 4、更改配置 egrep -n "^[a-z]" /etc/nova/nova.conf 2048:vncserver_proxyclient_address=192.168.1.37 改成计算节点的IP 5、启动服务 /etc/init.d/libvirtd start /etc/init.d/messagebus start /etc/init.d/openstack-nova-compute start 6、在控制节点上查看Nova的配置是否生效 nova host-list
7、部署Neutron
安装
yum install openstack-neutron openstack-neutron-ml2 python-neutronclient openstack-neutron-linuxbridge
基础配置
egrep -n '^[a-z]' /etc/neutron/neutron.conf 6:debug = true 10:state_path = /var/lib/neutron 13:lock_path = $state_path/lock 53:core_plugin = ml2 62 service_plugins = router,firewall,lbaas 385:root_helper = sudo neutron-rootwrap /etc/neutron/rootwrap.conf
Neutron配置MySQL
egrep -n '^[a-z]' /etc/neutron/neutron.conf 405:connection = mysql://neutron:neutron@192.168.1.36:3306/neutron
创建Neutron的用户
source keystone-admin keystone user-create --name neutron --pass neutron keystone user-role-add --user neutron --tenant service --role admin
Neutron配置Keystone
egrep -n '^[a-z]' /etc/neutron/neutron.conf 66:api_paste_config = /usr/share/neutron/api-paste.ini 70:auth_strategy = keystone 395:auth_host = 192.168.1.36 396:auth_port = 35357 397:auth_protocol = http 398:admin_tenant_name = service 399:admin_user = neutron 400:admin_password = neutron
Neutron配置RabbitMQ
egrep -n '^[a-z]' /etc/neutron/neutron.conf 134:rabbit_host = 192.168.1.36 136:rabbit_password = guest 138:rabbit_port = 5672 143:rabbit_userid = guest 145:rabbit_virtual_host = /
Neutron配置Nova
egrep -n '^[a-z]' /etc/neutron/neutron.conf 299:notify_nova_on_port_status_changes = true 303:notify_nova_on_port_data_changes = true 306:nova_url = http://192.168.1.36:8774/v2 312:nova_admin_username = nova 315:nova_admin_tenant_id = 628660545a044ac4ac5c1a16ca7f4a2c 318:nova_admin_password = nova 321:nova_admin_auth_url = http://192.168.1.36:35357/v2.0 注释:315行id的由来: keystone tenant-list 就是service的ID号码,填写到nova_admin_tenant_id即可。
配置ml2文件
egrep -n '^[a-z]' /etc/neutron/plugins/ml2/ml2_conf.ini 5:type_drivers = flat,vlan,gre,vxlan 12:tenant_network_types = flat,vlan,gre,vxlan 17:mechanism_drivers = linuxbridge,openvswitch 29:flat_networks = physnet1 62:enable_security_group = True
配置linuxbridge文件
egrep -n '^[a-z]' /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini 20:network_vlan_ranges = physnet1 31:physical_interface_mappings = physnet1:eth0 74:firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver 79:enable_security_group = True
Nova服务配置Neutron
egrep -n '^[a-z]' /etc/nova/nova.conf 1200 network_api_class=nova.network.neutronv2.api.API 1321 linuxnet_interface_driver=nova.network.linux_net.LinuxBridgeInterfaceDriver 1466 neutron_url=http://192.168.1.36:9696 1474 neutron_admin_username=neutron 1478 neutron_admin_password=neutron 1482 neutron_admin_tenant_id=628660545a044ac4ac5c1a16ca7f4a2c 1488 neutron_admin_tenant_name=service 1496 neutron_admin_auth_url=http://192.168.1.36:5000/v2.0 1503 neutron_auth_strategy=keystone 1536 security_group_api=neutron 1982 firewall_driver=nova.virt.libvirt.firewall.NoopFirewallDriver 2872 vif_driver=nova.virt.libvirt.vif.NeutronLinuxBridgeVIFDriver
重启服务
for i in {api,conductor,scheduler}; do service openstack-nova-"$i" restart;done
将配置文件推送到计算节点
scp /etc/nova/nova.conf 192.168.1.37:/etc/nova/
vim /etc/nova/nova.conf vncserver_proxyclient_address=192.168.1.37 改成计算节点的IP地址 /etc/init.d/openstack-nova-compute restart 重启服务
创建service和endpoint
keystone service-create --name neutron --type network keystone endpoint-create --service-id=$(keystone service-list | awk '/ network / {print $2}')
--publicurl=http://192.168.1.36:9696 --internalurl=http://192.168.1.36:9696 --adminurl=http://192.168.1.36:9696
Neutron试启动
neutron-server --config-file=/etc/neutron/neutron.conf --config-file=/etc/neutron/plugins/ml2/ml2_conf.ini
--config-file=/etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini
没有报错,看到监听的端口则说明能启动成功!
修改Neutron启动脚本
修改neutron-server启动脚本
vim /etc/init.d/neutron-server #15-17行 "/usr/share/$prog/$prog-dist.conf" "/etc/$prog/$prog.conf" "/etc/$prog/plugin.ini" #由上面更改为下面的类容: "/etc/neutron/neutron.conf" "/etc/neutron/plugins/ml2/ml2_conf.ini" "/etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini"
修改neutron-linuxbridge-agent启动脚本
vim /etc/init.d/neutron-linuxbridge-agent 16-18行 "/usr/share/$prog/$prog-dist.conf" "/etc/$prog/$prog.conf" "/etc/$prog/plugin.ini" #由上面更改为下面的类容: "/etc/neutron/neutron.conf" "/etc/neutron/plugins/ml2/ml2_conf.ini" "/etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini"
启动Nova服务
/etc/init.d/neutron-server start /etc/init.d/neutron-linuxbridge-agent start 查看端口 netstat -lntup|grep 9696
查看Neutron-list
neutron agent-list
计算节点Neutron的部署
1、安装 yum install openstack-neutron openstack-neutron-ml2 python-neutronclient openstack-neutron-linuxbridge 2、复制控制节点的Neutron配置文件 scp /etc/neutron/neutron.conf 192.168.1.37:/etc/neutron/ scp /etc/neutron/plugins/ml2/ml2_conf.ini 192.168.1.37:/etc/neutron/plugins/ml2/ scp /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini 192.168.1.37:/etc/neutron/plugins/linuxbridge/ scp /etc/init.d/neutron-* 192.168.1.37:/etc/init.d/ 3、启动Neutron服务 /etc/init.d/neutron-linuxbridge-agent start 4、到控制节点查看 neutron agent-list
8、 部署Horizon
安装
yum install -y httpd mod_wsgi memcached python-memcached openstack-dashboard
启动memcache
/etc/init.d/memcached start
配置dashboard
vim /etc/openstack-dashboard/local_settings 1、打开memcache,默认是关闭状态只需把前面注释取消掉即可 98 CACHES = { 99 'default': { 100 'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache', 101 'LOCATION' : '127.0.0.1:11211', 102 } 103 }
2、更改Keystone的地址 128 OPENSTACK_HOST = "192.168.1.36"
3、增加允许的主机 15 ALLOWED_HOSTS = ['horizon.example.com', 'localhost','192.168.1.36']
启动apache
/etc/init.d/httpd start
访问dashboard
http://192.168.1.36/dashboard/
创建网络
获取demo租户ID keystone tenant-list
创建网络 neutron net-create --tenant-id c4015c47e46f4b30bf68a6f39061ace3 flat_net
--shared --provider:network_type flat --provider:physical_network physnet1 查看创建的网络 neutron net-list
创建子网
管理员-->系统面板-->网络-->点网络名称(flat_net)-->点创建子网,如图:子网名称flat_subnet,网络地址10.96.20.0/24,
IP版本IPv4,网关IP10.96.20.1-->下一步-->子网详情:分配地址池10.96.20.120,10.96.20.130;DNS域名解析服务123.125.81.6-->创建
创建虚拟机
用demo用户登录: 项目-->Compute-->实例-->启动云主机-->云主机名称demo,
云主机类型m1.tiny,云主机启动源从镜像启动,镜像名称cirros-0.3.4-x86_64(12.7MB)-->运行
9、部署Cinder
安装
yum install openstack-cinder python-cinderclient
配置
egrep '^[a-z]' /etc/cinder/cinder.conf -n 79:rabbit_host=192.168.1.36 83:rabbit_port=5672 89:rabbit_use_ssl=false 92:rabbit_userid=guest 95:rabbit_password=guest 181:rpc_backend=rabbit 456:my_ip=192.168.1.36 459:glance_host=$my_ip 573:auth_strategy=keystone 727:debug=true 1908:connection=mysql://cinder:cinder@192.168.1.36/cinder 2013:auth_host=192.168.1.36 2017:auth_port=35357 2021:auth_protocol=http 2024:auth_uri=http://192.168.1.36:5000 2029:identity_uri=http://192.168.1.36:35357/ 2033:auth_version=v2.0 2057:admin_user=cinder 2060:admin_password=cinder 2064:admin_tenant_name=service
同步数据库
cinder-manage db sync mysql -h 192.168.1.36 -u cinder -pcinder -e 'use cinder;show tables;'
Keystone注册
keystone user-create --name=cinder --pass=cinder keystone user-role-add --user=cinder --tenant=service --role=admin
keystone service-create --name=cinder --type=volume keystone endpoint-create --service-id=e7e5fdadbe874485b3225c8a833f229e --publicurl=http://192.168.1.36:8776/v1/%(tenant_id)s
--internalurl=http://192.168.1.36:8776/v1/%(tenant_id)s --adminurl=http://192.168.1.36:8776/v1/%(tenant_id)s keystone service-create --name=cinderv2 --type=volumev2 keystone endpoint-create --service-id=aee6b0eac6ed49f08fd2cebda1cb71d7 --publicurl=http://192.168.1.36:8776/v2/%(tenant_id)s
--internalurl=http://192.168.1.36:8776/v2/%(tenant_id)s --adminurl=http://192.168.1.36:8776/v2/%(tenant_id)s keystone service-list cinder service-list keystone endpoint-list
启动服务
/etc/init.d/openstack-cinder-api start
/etc/init.d/openstack-cinder-scheduler start
计算节点Cinder的部署
1、部署ISCSI环境 pvcreate /dev/sdb vgcreate cinder-volumes /dev/sdb vim /etc/lvm/lvm.conf 在devices{}里面添加: filter = [ "a/sda1/", "a/sdb/", "r/.*/" ] yum install -y scsi-target-utils vim /etc/tgt/targets.conf include /etc/cinder/volumes/* /etc/init.d/tgtd start
2、部署Cinder环境 yum install openstack-cinder scp /etc/cinder/cinder.conf 192.168.1.37:/etc/cinder/
egrep '^[a-z]' /etc/cinder/cinder.conf 配置iSCSI 957 iscsi_ip_address=$my_ip 970 volume_backend_name=iSCSI-Storage 991 iscsi_helper=tgtadm 1836 volume_driver=cinder.volume.drivers.lvm.LVMISCSIDriver
3、启动服务
/etc/init.d/openstack-cinder-volume start
4、控制节点查看
cinder service-list
创建iSCSI存储类型
cinder type-create iSCSI cinder type-key iSCSI set volume_backend_name=iSCSI-Storage cinder type-list
创建iSCSI类型云硬盘
路径:项目 > Compute > 云硬盘 > 创建云硬盘
计算节点查看创建好的云硬盘信息:
lvdisplay
Cinder-NFS云硬盘(部署在控制节点)
部署NFS环境
yum install nfs-utils rpcbind mkdir -p /data/nfs vim /etc/exports /data/nfs *(rw,no_root_squash) /etc/init.d/rpcbind start /etc/init.d/nfs start
部署Cinder环境
vim /etc/cinder/cinder.conf 970 volume_backend_name=NFS-Storage 1492 nfs_shares_config=/etc/cinder/nfs_shares 1511 nfs_mount_point_base=$state_path/mnt 1837 volume_driver=cinder.volume.drivers.nfs.NfsDriver vim /etc/cinder/nfs_shares 192.168.1.36:/data/nfs
重启Cinder-volume
/etc/init.d/openstack-cinder-volume restart
控制节点查看
cinder service-list
创建NFS存储类型
cinder type-create NFS cinder type-key NFS set volume_backend_name=NFS-Storage cinder type-list
创建NFS类型云硬盘
路径:项目 > Compute > 云硬盘 > 创建云硬盘
查看创建的卷
mount
Cinder-GlusterFS云硬盘
部署GlusterFS环境
控制节点和计算节点都需要安装配置
1、安装 vim /etc/yum.repos.d/gluster.repo https://buildlogs.centos.org/centos/6/storage/x86_64/gluster-3.6/ yum install glusterfs-server /etc/init.d/glusterd start mkdir -p /data/glusterfs/exp1 2、创建信任存储池 gluster peer probe 192.168.1.363、创建卷 gluster volume create cinder-volome01 replica 2 192.168.1.36:/data/glusterfs/exp1/ 192.168.1.37:/data/glusterfs/exp1 force 4、启动卷 gluster vol start cinder-volome01 5、查看卷 gluster vol info
部署Cinder环境
egrep -n '^[a-z]' /etc/cinder/cinder.conf 1104 glusterfs_shares_config=/etc/cinder/glusterfs_shares vim /etc/cinder/glusterfs_shares 192.168.1.36:/cinder-volome01
创建GlustaerFS和NFS并用的存储类型(同时支持多个存储的方法)
vim /etc/cinder/cinder.conf #注释掉下面几行NFS的配置: 970 #volume_backend_name=NFS-Storage 1837 #volume_driver=cinder.volume.drivers.nfs.NfsDriver #修改并添加如下几行的配置: 578 enabled_backends=NFS_Driver,GlusterFS_Driver
#放到文件最后 [NFS_Driver] volume_group=NFS_Driver volume_driver=cinder.volume.drivers.nfs.NfsDriver volume_backend_name=NFS-Storage [GlusterFS_Driver] volume_group=GlusterFS_Driver volume_driver=cinder.volume.drivers.glusterfs.GlusterfsDriver volume_backend_name=GlusterFS-Storage
重启Cinder-volume
/etc/init.d/openstack-cinder-volume restart
创建GlusterFS存储类型
cinder type-create GlusterFS cinder type-key GlusterFS set volume_backend_name=GlusterFS-Storage cinder type-list
创建GlusterFS类型云硬盘
路径:项目 > Compute > 云硬盘 > 创建云硬盘
10、部署负载均衡LBaas
1)在dashboard中打开lbaas菜单
vim /etc/openstack-dashboard/local_settings OPENSTACK_NEUTRON_NETWORK = { 'enable_lb': True, } 将原来的False改为True.(注意大写)
2)重启dashboard服务
/etc/init.d/httpd restart
3)安装 haproxy服务
yum install haproxy
4)修改neutron的配置文件
vim /etc/neutron/lbaas_agent.ini interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver device_driver = neutron.services.loadbalancer.drivers.haproxy.namespace_driver.HaproxyNSDriver
5)安装namespace支持
ip netns list (输入命令没有报错说明支持,不要在安装了) yum update iproute 或者 rpm -ivh --replacefiles http://www.rendoumi.com/soft/iproute-2.6.32-130.el6ost.netns.2.x86_64.rpm
6)修改启动lbaas脚本
vim /etc/init.d/neutron-lbaas-agent configs=( "/etc/neutron/neutron.conf" "/etc/neutron/lbaas_agent.ini" )
7)启动lbaas服务
/etc/init.d/neutron-lbaas-agent start
8)在WEB界面添加负载均衡
ip netns list #查看命名空间 ip netns exec qlbaas-6104510d-cf14-4608-8c9f-9e7841b1a918 netstat -antp #可以看到haproxy的端口监听 ip netns exec qlbaas-6104510d-cf14-4608-8c9f-9e7841b1a918 ip add #查看VIP
Saltstack自动化部署Openstack
https://github.com/unixhot/salt-openstack