前言
这部分基于前面部署好服务来创建我们的第一个VM实例。
一、创建第一个VM实例
1. 创建虚拟网络
# 切换admin用户
source openstack-admin.sh
# 创建一个名为provider的网络,网络类型为external
openstack network create --share --external --provider-physical-network provider --provider-network-type flat provider
# 验证
openstack network list
参数说明:
–share:允许所有项目都可以使用该网络;
–external:定义连通外部的虚拟网络;
–provider-physical-network:指定物理网络的提供者,由ml2_conf.ini文件的flat_networks确定;
–provider-network-type flat:映射到虚拟主机的网卡eth0,由linuxbridge_agent.ini文件的physical_interface_mappings确定;
2. 创建子网
# 基于provider网络创建子网
openstack subnet create --network provider --allocation-pool start=192.168.88.100,end=192.168.88.120 --dns-nameserver 223.5.5.5 --gateway 192.168.88.2 --subnet-range 192.168.88.0/24 provider
# 验证
openstack subnet list
参数说明:
–network:指定网络名称,表示该子网用在哪个网段;
–allocation-pool:指定分配的地址池,start设定起始地址,end设置结束地址;
–dns-nameserver:指定域名服务器,可以用8.8.4.4(google),223.5.5.5(阿里云)等;
–gateway:指定网关,设定宿主机的网络网关;
–subnet-range:指定子网范围;
3. 创建VM实例规格
# 创建一个名为m1.nano的flavor
openstack flavor create --id 0 --vcpus 1 --ram 1024 --disk 10 m1.nano
# 验证
openstack flavor list
参数说明:
– id:VM实例ID;
–vcpus:cpu数量;
–ram:内存数量,单位Mb;
–disk:磁盘空间大小,单位Gb;
4. 配置密钥
# 切换demo用户
source openstack-demo.sh
# 生成密钥
ssh-keygen -q -N ""
# 查看生成的密钥文件
ls ~/.ssh/
# 上传密钥
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
# 检查密钥对
openstack keypair list
5. 添加安全组
# ping规则
openstack security group rule create --proto icmp default
# ssh规则
openstack security group rule create --proto tcp --dst-port 22 default
6. 创建虚拟机实例
# 创建一个名为provider-instance的VM实例
openstack server create --flavor m1.nano --image cirros --nic net-id=d75d1e11-0639-4b63-a463-2e6e4ae0efb3 --security-group default --key-name mykey provider-instance
参数说明:
–flavor:设定主机规格;
–image:设定虚拟机使用的镜像文件;
–nic:设定虚拟网卡使用的网络,net-id可通过openstack network list
获得;
–security-group:设定虚拟机的安全组;
–key-name:设定虚拟机使用的秘钥对名称;
执行完上面命令后,可通过openstack server list
命令检查是否创建成功。如果创建失败,可以在compute节点上查看nova-compute日志。
egrep ERROR /var/log/nova/nova-compute.log
7. 访问虚拟机
首先要先获取虚拟机的访问地址。
openstack console url show provider-instance
然后将地址复制到浏览器地址栏上,然后输入:
用户名:cirros
密码:gocubsgo
也可以直接在终端里面通过ssh命令直接访问。比如:
ssh cirros@192.168.88.110
二、可视化界面部署
1. Horizon组件介绍
Horizon是OpenStack中用于管理、控制OpenStack服务的Web控制面板,通过Horizon提供的DashBoard,用户可以通过图形化的界面管理OpenStack的所有云计算资源。总之,OpenStack中所有命令行能实现的功能,都能在Horizon提供的Dashboard界面上实现其功能。所以Horizon是OpenStack各个服务项目与用户进行交互的统一管理界面。Horizon一般是以Web形式提供服务的,和OpenStack的keystone组件关系最好,可以选择性的支持其他所有的组件。
2. 组件部署
首先安装openstack-dashboard软件。
yum install -y openstack-dashboard --nogpgchec
安装完成后,修改horizon配置文件:
cp /etc/openstack-dashboard/local_settings{,.bak}
vim /etc/openstack-dashboard/local_settings
# 配置 horizon 允许登录的主机
ALLOWED_HOSTS = ['*',]
# 配置 horizon 的 api 版本信息
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"compute": 2,
}
# 开启域名支持功能
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
# 使用默认的域名
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
# 会话信息配置
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '192.168.88.14:11211',
},
}
# 配置认证的 keystone 地址
OPENSTACK_HOST = "192.168.88.14"
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
# 配置登录 horizon 的用户所在的角色组
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
# 配置网络信息
OPENSTACK_NEUTRON_NETWORK = {
'enable_router': False,
'enable_quotas': False,
'enable_ipv6': False,
'enable_distributed_router': False,
'enable_ha_router': False,
'enable_fip_topology_check': False,
'enable_lb': False,
'enable_firewall': False,
'enable_vpn': False,
}
# 设置时区信息
TIME_ZONE = "Asia/Shanghai"
配置完horizon后,还需要配置dashboard。
vim /etc/httpd/conf.d/openstack-dashboard.conf
# 增加一条配置
WSGIApplicationGroup %{GLOBAL}
完成上面步骤后,重启一下httpd和memcached服务。
systemctl restart httpd memcached
systemctl status httpd memcached
服务重启成功后,在浏览器上输入192.168.88.14/dashboard
,然后输入用户登录信息即可。
输入域:Default(默认)
用户名:admin|demo
密码:admin|demo
3. 登录问题
- 问题一:dashboard登录出现404。
cd /usr/share/openstack-dashboard
# 1.将web信息写入到openstack-dashboard.conf文件
python manage.py make_web_conf --apache > /etc/httpd/conf.d/openstack-dashboard.conf
# 2.将Location节点的“/”修改为“/dashboard”
vim /etc/httpd/conf.d/openstack-dashboard.conf
<Location "/dashboard">
Require all granted
</Location>
# 3.建立策略文件的软链接
ln -s /etc/openstack-dashboard /usr/share/openstack-dashboard/openstack_dashboard/conf
# 4.重启httpd服务
systemctl restart httpd
- 问题二:无法访问身份管理。
# 1.找到WEBROOT='/' ,改为WEBROOT='/dashboard'
vim /usr/share/openstack-dashboard/openstack_dashboard/defaults.py
vim /usr/share/openstack-dashboard/openstack_dashboard/test/settings.py
vim /usr/share/openstack-dashboard/static/dashboard/js/xxxxxx.js
# 2.修改openstack-dashboard.conf配置
vim /etc/httpd/conf.d/openstack-dashboard.conf
WSGIScriptAlias /dashboard /usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi
Alias /dashboard/static /usr/share/openstack-dashboard/static
# 3.重启httpd服务
systemctl restart httpd
总结
这部分介绍了如何创建一个VM实例,以及完成dashborad管理界面的配置。接下来介绍Openstack存储组件的部署。