Openstack环境部署

来源:互联网 发布:违章查询软件下载 编辑:程序博客网 时间:2024/05/17 23:29

(参考文献:http://www.cnblogs.com/kevingrace/p/5707003.html 、https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/)

大规模部署方案解释:http://geek.csdn.net/news/detail/209764

注:建议更改某个服务的配置文件时,拷贝一份,防止修改错误而乱删乱改!!!
314463783ef9a336f35f
1、系统:centOS7
2、数量:暂定3台
·1、控制节点:controller1 IP:192.168.2.201 外网:124.65.181.122
·2、计算节点:nova1 IP:192.168.2.202 外网:124.65.181.122
·3、块存储节点:cinder IP:192.168.2.223 至少两块硬盘
3、域名解析和关闭iptables、selinux(所有节点)
域名解析:vi /etc/hosts
192.168.2.201 controller1
192.168.2.202 compute1
192.168.2.223 cinder1
注:可选择编辑controller1节点的hosts文件然后逐一发送至其他节点:scp /etc/hosts IP地址:/etc/hosts
关闭selinux
永久关闭:vi /etc/selinux/config
SELINUX=disabled
临时关闭:setenforce 0
关闭iptables
永久关闭:systemctl disable firewalld.service
临时关闭:systemctl stop firewalld.service
4、配置网络时间协议(NTP)
控制节点:
yum install chrony
编辑:vi /etc/chrony.conf
allow 192.168/24 #允许的服务器和自己同步时间
systemctl enable chronyd.service #开机自启
systemctl start chronyd.service
timedatectl set-timezone Asia/Shanghai #设置时区
timedatectl status #查看
其他节点:
yum install chrony
编辑:vi /etc/chrony.conf
server controller1 iburst #设置时间服务主机名/IP
systemctl enable chronyd.service #开机自启
systemctl start chronyd.service
timedatectl set-timezone Asia/Shanghai #设置时区
chronyc sources
测试是否时间同步
所有节点执行相同:chronyc sources
5、升级包、系统(所有节点)
yum install centos-release-openstack-mitaka
升级包:yum upgrade #若更新新内核,需重启来使用新内核
客户端:yum install python-openstackclient
安全策略:yum install openstack-selinux
6、数据库—mysql (控制节点)
安装软件包:yum install mariadb mariadb-server MySQL-python
拷贝配置文件:cp /usr/share/mariadb/my-medium.cnf /etc/my.cnf #或者/usr/share/mysql/my-medium.cnf /etc/my.cnf
编辑:vi /etc/my.cnf
[mysqld]
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = ‘SET NAMES utf8’
character-set-server = utf8
设置开机自启:systemctl enable mariadb.service
链接: ln -s ‘/usr/lib/systemd/system/mariadb.service’ ‘/etc/systemd/system/multi-user.target.wants/mariadb.service’
初始化数据库:mysql_install_db –datadir=”/var/lib/mysql” –user=”mysql”
这里写图片描述

开启数据库:systemctl start mariadb.service
设置密码及初始化:mysql_secure_installation
这里写图片描述

此处我们登陆数据库,分别创建核心节点的数据库然后赋予相应权限:

CREATE DATABASE keystone;               #身份认证GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone'; CREATE DATABASE glance;                #镜像服务GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance';GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance'; CREATE DATABASE nova;                  #计算服务GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova'; CREATE DATABASE neutron;               #网络服务GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron';GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron';CREATE DATABASE cinder;             #块存储服务GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder';GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder';

刷新数据库:flush privileges;
查看:show databases;
7、消息队列—-rabbitmq (控制节点)
安装软件包:yum install rabbitmq-server
启动rabbitmq:端口为5672
systemctl enable rabbitmq-server.service
链接:
ln -s ‘/usr/lib/systemd/system/rabbitmq-server’ ‘/etc/systemd/system/multi-user.target.wants/rabbitmq-server.service’
这里写图片描述

启动:systemctl start rabbitmq-server.service
注:若验证是否开启成功执行查看端口命令:netstat -anpt
添加openstack用户及密码:rabbitmqctl add_user openstack openstack123 #openstack123表示自行定义的密码
为openstack用户设置权限:rabbitmqctl set_permissions openstack “.” “.” “.*” #允许配置、写、读访问openstack
查看支持的插件:rabbitmq-plugins list
启动插件:rabbitmq-plugins enable rabbitmq_management #rabbitmq_management表示实现WEB管理
重启rabbitmq服务: systemctl restart rabbitmq-server.service
端口:lsof -i:15672
测试访问http://192.168.2.201:15672 登陆的用户密码皆是guest。(设置的密码表示元数据的密码)
这里写图片描述
这里写图片描述

8、认证服务—-keystone (端口:5000和35357) #控制节点执行
1、安装软件包:yum install openstack-keystone httpd mod_wsgi memcached python-memcached
注:memcached表示认证服务缓存
2、首先生成随机值:openssl rand -hex 10
3、拷贝一份keystone配置文件,防止修改出错后排查:cp /etc/keystone/keystone.conf /etc/keystone/keystone.conf.bak
编辑文件vi /etc/keystone/keystone.conf:

[DEFAULT]
admin_token = b6f89e3f5d766bb71bf8 #此处是生成的随机值
token_format = UUID
[database]
connection = mysql+pymysql://keystone:keystone123@controller1/keystone
[memcache]
servers = controller1:11211
[token]
provider = uuid
driver = keystone.token.persistence.backends.sql.Token

注:keystone默认使用SQL数据库存储token,token默认值为1天(24h)。Openstack中每个组件执行的每次命令(请求)都需要token验证,每次访问都会创建token,增长速度非常快,token表数据也会越来越多。随着时间的推移,无效的记录越来越多,企业私有云的量就可以几万条、几十万条。这么多无效的token导致针对token表的SQL语句变慢,性能也会变差,要么手动写个定时脚本清理token表;要么把token存放在memcache缓存中,利用memcache特性,自动删除不使用的缓存。(本次使用第二种方法)
4、创建数据库表,使用命令同步:su -s /bin/sh -c “keystone-manage db_sync” keystone
数据库检查表:mysql -h 192.168.2.201 -u keystone -pkeystone123 #密码键入,直接登陆keystone库
5、启动apache和memcache
启动memcache:
systemctl enable memcached
注:执行此命令后若出现:Created symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.表示做了一条链接,让其开机自启。然后重新执行此命令!
systemctl start memcached #启动memcache
验证方法则是查看其默认的11211端口是否开启
6、配置httpd,编辑其/etc/httpd/conf/httpd.conf文件
ServerName controller1:80
创建文件/etc/httpd/conf.d/wsgi-keystone.conf,内容如下:

Listen 5000Listen 35357<VirtualHost *:5000>    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}    WSGIProcessGroup keystone-public    WSGIScriptAlias / /usr/bin/keystone-wsgi-public    WSGIApplicationGroup %{GLOBAL}    WSGIPassAuthorization On    ErrorLogFormat "%{cu}t %M"    ErrorLog /var/log/httpd/keystone-error.log    CustomLog /var/log/httpd/keystone-access.log combined    <Directory /usr/bin>        Require all granted    </Directory></VirtualHost><VirtualHost *:35357>    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}    WSGIProcessGroup keystone-admin    WSGIScriptAlias / /usr/bin/keystone-wsgi-admin    WSGIApplicationGroup %{GLOBAL}    WSGIPassAuthorization On    ErrorLogFormat "%{cu}t %M"    ErrorLog /var/log/httpd/keystone-error.log    CustomLog /var/log/httpd/keystone-access.log combined    <Directory /usr/bin>        Require all granted    </Directory></VirtualHost>

启动httpd:
systemctl enable httpd
systemctl start httpd
过滤查看:netstat -lntup | grep httpd #或者查看全部其开启的端口 netstat -anpt
7、创建keystone用户
临时设置admin_token用户的环境变量,用来创建用户
配置认证令牌:export OS_TOKEN=b6f89e3f5d766bb71bf8 #产生的随机值
配置端点URL:export OS_URL=http://controller1:35357/v3
配置认证API版本:export OS_IDENTITY_API_VERSION=3
8、创建服务实体和身份认证服务:openstack service create –name keystone –description “Openstack Identity” identity
(注:实体ID:e6aa9c8d2e504978a77d09d09d8213d4 名称:keystone 类:identity) #只是标记,你可忽略
9、创建认证服务API端点:(public公共的、internal内部的、admin管理的)
openstack endpoint create –region RegionOne identity public http://controller1:5000/v3
openstack endpoint create –region RegionOne identity internal http://controller1:5000/v3
openstack endpoint create –region RegionOne identity admin http://controller1:5000/v3
查看端点列表:
这里写图片描述

10、创建域‘default’:openstack domain create –description “Default Domain” default
查看域列表:
这里写图片描述

11、创建admin项目、admin用户、admin角色;添加admin 角色到 admin 项目和用户上
项目:openstack project create –domain default –description “Admin Project” admin
用户:openstack user create –domain default –password-prompt admin #执行命令后,输入自定义密码,本次密码为admin123
角色:openstack role create admin
添加:openstack role add –project admin –user admin admin #–project admin代表项目,–user admin代表用户
注意:此处陈述下大致的openstack逻辑关系======================================================
1、创建域,以下说明皆在域内,可以说域相当于总框架
2、admin表示管理任务服务的项目;demo表示常务任务服务的项目;service表示每个服务包含独有用户的项目
3、service项目中对应每个模块的一个实体
4、每个模块对应三个变种端点:public(公共)、internal(内部)、admin(管理)
5、除了service独有用户的项目以外,基本其他项目都相对应一个用户、角色
6、每个模块的用户我们使用openstack项目名称做代表(keystone、glance、nova等)
7、而每个模块下的用户基本会对应一个角色
8、基本架构可简单描述:域—>项目→用户→角色
“““““““““““““““↓
“““““““““““““““`变种端点
其他:
查看域列表:openstack domain list
查看API端点列表:openstack endpoint list
查看项目列表:openstack project list
查看用户列表:openstack user list
查看角色列表:openstack role list
过滤配置文件内容:cat 配置文件路径 | grep -v “^#”|grep -v “^$”
过滤文件内容(显示行数):grep -n ‘^[a-z]’ /etc/neutron/neutron.conf
若删除全部端点、服务等,只需把keystone数据删除即可。
( 一些常见问题:http://www.cnblogs.com/kevingrace/p/5811167.html )
注意问题:若查看列表时出现以下显示
1、[root@controller1 ~]# openstack project list
Could not find requested endpoint in Service Catalog. 或者
init() got an unexpected keyword argument ‘token’ 或者
The resource could not be found. (HTTP 404)
请重新执行token认证:(unset OS_TOKEN OS_URL)
这里写图片描述

12、创建service项目:openstack project create –domain default –description “Service Project” service
13、创建demo项目:openstack project create –domain default –description “Demo Project” demo
查看项目列表:
这里写图片描述
创建demo用户:openstack user create –domain default –password-prompt demo #执行后输入自定义密码,本次密码为demo123
创建user角色:openstack role create user
添加:openstack role add –project demo –user demo user
查看用户列表:
这里写图片描述

查看角色列表:
这里写图片描述

14、验证,获取token(只有获取到才能说明keystone配置成功):unset OS_TOKEN OS_URL
用户admin,请求认证令牌:openstack –os-auth-url http://controller1:35357/v3 –os-project-domain-name default –os-user-domain-name default –os-project-name admin –os-username admin token issue
15、创建环境变量脚本:

编辑admin:export OS_PROJECT_DOMAIN_NAME=defaultexport OS_USER_DOMAIN_NAME=defaultexport OS_PROJECT_NAME=adminexport OS_USERNAME=adminexport OS_PASSWORD=admin123export OS_AUTH_URL=http://controller1:35357/v3export OS_INENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2
编辑demo:export OS_PROJECT_DOMAIN_NAME=defaultexport OS_USER_DOMAIN_NAME=defaultexport OS_PROJECT_NAME=demoexport OS_USERNAME=demoexport OS_PASSWORD=demo123export OS_AUTH_URL=http://controller1:5000/v3export OS_IDENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2

测试切换admin环境变量: . admin-openrc
这里写图片描述

测试切换demo环境变量: . demo-openrc
这里写图片描述

镜像模块(端口 API 9191; registry 9292)
1、安装包:yum install openstack-glance python-glance python-glanceclient
2、编辑修改/etc/glance/glance-api.conf #注意,修改前请拷贝一份其配置文件;使其配置出错可以恢复

[database]connection = mysql+pymysql://glance:glance123@controller1/glance[glance_store]stores = file,httpdefault_store = filefilesystem_store_datadir = /var/lib/glance/images/[keystone_authtoken]auth_uri = http://controller1:5000auth_url = http://controller1:35357memcached_servers = controller1:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = glancepassword = glance123[paste_deploy]flavor = keystone

3、编辑修改/etc/glance/glance-registry.conf #注意,修改前请拷贝一份其配置文件;使其配置出错可以恢复

[database]connection = mysql+pymysql://glance:glance123@controller1/glance[glance_store][keystone_authtoken]auth_uri = http://controller1:5000auth_url = http://controller1:35357memcached_servers = controller1:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = glancepassword = glance123[paste_deploy]flavor = keystone

创建数据库表,初始化数据库: su -s /bin/sh -c “glance-manage db_sync” glance #忽略输出信息,比如:
这里写图片描述
测试登陆数据然后查看列表:mysql -h controller1 -uglance -pglance123

4、切换环境变量: . admin-openrc
创建关于glance用户:openstack user create –domain default –password-prompt glance #本次glance用户密码定义为glance123
查看用户列表:
这里写图片描述
添加admin角色到glance用户和service项目上:openstack role add –project service –user glance admin
设置开机自启:systemctl enable openstack-glance-api openstack-glance-registry
开启:systemctl start openstack-glance-api openstack-glance-registry
查看是否有相应端口,确认是否开启:netstat -lnutp |grep 9191
5、创建glance服务实体:openstack service create –name glance –description “OpenStack Image service” image
查看实体列表:
这里写图片描述
创建镜像服务的API端点:
openstack endpoint create –region RegionOne image public http://controller1:9292
openstack endpoint create –region RegionOne image internal http://controller1:9292
openstack endpoint create –region RegionOne image admin http://controller1:9292
查看端点列表:
这里写图片描述

6、测试
下载源镜像:wget -q http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
注:若提示wget命令未找到须执行:yum install wget -y
上传:glance image-create –name “cirros” –file cirros-0.3.4-x86_64-disk.img –disk-format qcow2 –container-format bare –visibility public –progress
查看镜像列表:
这里写图片描述

注意:如果上传镜像时出现:
503 Service Unavailable: The server is currently unavailable. Please try again at a later time. (HTTP 503)
解决方法如下:
删除glance用户:openstack user delete ID #id是使用openstack user list查询到的glance 的ID
重新执行创建glance用户命令:openstack user create –domain default –password-prompt glance #本次glance用户密码定义为glance123
添加admin角色到glance用户和service项目上:openstack role add –project service –user glance admin
设置开机自启:systemctl enable openstack-glance-api openstack-glance-registry
开启:systemctl start openstack-glance-api openstack-glance-registry
查看是否有相应端口,确认是否开启:netstat -lnutp |grep 9191

计算服务
控制节点安装的软件包:
yum install -y openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient
注:具体安装包解释请查看编写的openstack技术数据文档!
控制节点执行编辑/etc/nova/nova.conf(表示如果控制节点也作为计算节点便设置)

[DEFAULT]                                                   #只启用计算和元数据APImy_ip=192.168.2.201                                     #控制节点IPenabled_apis=osapi_compute,metadataauth_strategy=keystoneallow_resize_to_same_host=truefirewall_driver=nova.virt.firewall.NoopFirewallDrivernetwork_api_class=nova.network.neutronv2.api.APIuse_neutron=truerpc_backend=rabbitscheduler_default_filters = RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter   #配置调度[api_database]                                                          #配置数据库连接connection=mysql+pymysql://nova:nova123@controller1/nova_api[database]connection=mysql+pymysql://nova:nova123@controller1/nova[glance]                                                                #配置服务API的位置...api_servers= http://controller1:9292[keystone_authtoken]                            #配置认证服务访问...                                         auth_uri=http://controller1:5000auth_url = http://controller1:35357memcached_servers = controller1:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = novapassword = nova123[libvirt]                                   ...                 virt_type=kvm                               #若控制节点也作为计算节点,这一行需添加[neutron]                                   #网络配置...url=http://controller1:9696auth_url = http://controller1:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = neutron123service_metadata_proxy = Truemetadata_proxy_shared_secret = neutron[oslo_messaging_rabbit]                                             #配置消息队列访问...rabbit_host=controller1rabbit_userid=openstackrabbit_password=openstack123                                        #openstack定义的密码[vnc]                                                               #配置VNC代理...keymap=en-us                                                        #若控制节点也作为计算节点,需添加vncserver_listen=$my_ipvncserver_proxyclient_address=$my_ipnovncproxy_base_url=http://公网IP:6080/vnc_auto.html      #若控制节点也作为计算节点,需添加。IP则是公网IP

同步compute数据库:
su -s /bin/sh -c “nova-manage api_db sync” nova
su -s /bin/sh -c “nova-manage db sync” nova
注:若出现以下↓提示错误信息,请继续执行命令,用户添加命令执行后,请重新执行su -s /bin/sh -c “nova-manage db sync” nova:
*/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u’Duplicate index block_device_mapping_instance_uuid_virtual_name_device_name_idx. This is deprecated and will be disallowed in a future release.’)
result = self._query(query);/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u’Duplicate index uniq_instances0uuid. This is deprecated and will be disallowed in a future release.’);result = self._query(query)。*
创建nova用户:openstack user create –domain default –password-prompt nova #注:本次密码自定义设置的是nova123
查看用户列表:
这里写图片描述
给nova用户添加admin角色:openstack role add –project service –user nova admin
启动相关nova相关的服务:

systemctl enable openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.servicesystemctl start openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

创建nova实体:openstack service create –name nova –description “OpenStack Compute” compute
查看实体列表:
这里写图片描述
创建compute服务API端点:
openstack endpoint create –region RegionOne compute public http://controller1:8774/v2.1/%(tenant_id)s
openstack endpoint create –region RegionOne compute internal http://controller1:8774/v2.1/%(tenant_id)s
openstack endpoint create –region RegionOne compute admin http://controller1:8774/v2.1/%(tenant_id)s
端点列表查看:
这里写图片描述
检查:
这里写图片描述

计算节点安装的软件包:yum install -y openstack-nova-compute sysfsutils
编辑文件计算节点/etc/nova/nova.conf

[DEFAULT]my_ip=192.168.2.202                                                 #计算节点1的IPenabled_apis=osapi_compute,metadataauth_strategy=keystonefirewall_driver=nova.virt.firewall.NoopFirewallDrivernetwork_api_class=nova.network.neutronv2.api.APIuse_neutron=truerpc_backend=rabbit  [glance]api_servers= http://controller1:9292[keystone_authtoken]auth_uri=http://controller1:5000auth_url = http://controller1:35357memcached_servers = controller1:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = novapassword = nova123                                                  #自定义的计算节点密码[cinder]                                                                #块存储os_region_name=RengionOne[libvirt]virt_type=qemu[neutron]                                                       #网络模块url=http://controller1:9696auth_url = http://controller1:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = neutron123                                               #自定义的网络模块密码[oslo_concurrency]lock_path=/var/lib/nova/tmp[oslo_messaging_rabbit]rabbit_host=controller1rabbit_userid=openstackrabbit_password=openstack123[vnc]keymap=en-usvncserver_listen=0.0.0.0                                                    #所有IP访问vncserver_proxyclient_address=$my_ipnovncproxy_base_url=http://192.168.2.201:6080/vnc_auto.html         #控制节点IP启动服务:systemctl enable libvirtd openstack-nova-computesystemctl start libvirtd openstack-nova-compute

测试glance是否正常:(已解决,详情在下)
这里写图片描述

测试keystone是否正常:
这里写图片描述

网络模块
控制节点安装:yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables
计算节点安装:yum install -y openstack-neutron-linuxbridge ebtables ipset
1、控制节点编辑以下配置文件
·1、编辑/etc/neutron/neutron.conf:

[DEFAULT]auth_strategy = keystonecore_plugin = ml2service_plugins = routerallow_overlapping_ips = Truenotify_nova_on_port_status_changes = truenotify_nova_on_port_data_changes = truerpc_backend = rabbit[database]connection = mysql+pymysql://neutron:neutron123@controller1/neutron[keystone_authtoken]auth_uri = http://controller1:5000auth_url = http://controller1:35357memcached_servers = controller1:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = neutron123[nova]                                                      #配置网络通知计算网络拓扑变化auth_url = http://controller1:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = novapassword = nova123[oslo_concurrency]lock_path = /var/log/neutron/tmp[oslo_messaging_rabbit]rabbit_host = controller1rabbit_userid = openstackrabbit_password = openstack123

·2、编辑/etc/neutron/plugins/ml2/ml2_conf.ini:

[ml2]type_drivers = flat,vlan,vxlantenant_network_types = vxlanmechanism_drivers = linuxbridge,l2populationextension_drivers = port_security                                   #启用端口安全[ml2_type_flat]                                                     #虚拟网络配置提供者平面网络flat_networks = provider[ml2_type_vxlan]vni_ranges = 1:1000[securitygroup]enable_ipset = true

·3、编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini:

[linux_bridge]physical_interface_mappings = provider:enp5s0           #网卡名称[securitygroup]firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriverenable_security_group = true[vxlan]enable_vxlan = truelocal_ip = 192.168.2.201l2_population = true

·4、编辑/etc/neutron/dhcp_agent.ini:

[DEFAULT]interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriverdhcp_driver = neutron.agent.linux.dhcp.Dnsmasqenable_isolated_metadata = true

·5、编辑/etc/neutron/l3_agent.ini,添加如下:

[DEFAULT]interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriverexternal_network_bridge = 

·6、编辑/etc/neutron/metadata_agent.ini:

[DEFAULT]nova_metadata_ip = controller1metadata_proxy_shared_secret = neutron123

1、创建连接:ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
2、创建neutron用户:openstack user create –domain default –password-prompt neutron #本次设置自定义用户密码为neutron123
查看用户列表:
这里写图片描述

3、添加admin角色到neutron用户:openstack role add –project service –user neutron admin
4、更新数据库:su -s /bin/sh -c “neutron-db-manage –config-file /etc/neutron/neutron.conf –config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head” neutron
5、创建neutron服务实体:openstack service create –name neutron –description “OpenStack Network” network
查看实体列表:
这里写图片描述
6、创建网络服务API端点:
openstack endpoint create –region RegionOne network public http://controller1:9696
openstack endpoint create –region RegionOne network internal http://controller1:9696
openstack endpoint create –region RegionOne network admin http://controller1:9696
查看端点列表:
这里写图片描述
5、启动服务并检查(注:由于计算和网络有联系,在nova.conf中做了网络的关联配置,需重启api)
systemctl restart openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
6、启动网络相关服务
开机自启:systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
启动服务:systemctl start neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
私有网络还要启动:systemctl start neutron-l3-agent.service

计算节点配置:
1、编辑/etc/neutron/neutron.conf:

[DEFAULT]auth_strategy = keystonerpc_backend = rabbit[keystone_authtoken]auth_uri = http://controller1:5000auth_url = http://controller1:35357memcached_servers = controller1:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = neutron123[oslo_concurrency]lock_path = /var/lib/neutron/tmp[oslo_messaging_rabbit]rabbit_host = controller1rabbit_userid = openstackrabbit_password = openstack123

2、编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini :

[linux_bridge]physical_interface_mappings = provider:em2[securitygroup]firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriverenable_security_group = true[vxlan]enable_vxlan = Truelocal_ip = 192.168.2.202l2_population = True

开机自启及开启:
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service
7、控制节点切换访问权限:. admin-openrc
查看neutron-server进程是否正常启动:
这里写图片描述
8、测试是否成功:
这里写图片描述

问题:在控制节点测试若发现以下问题1、[root@controller1 ~]# neutron agent-list404-{u'error': {u'message': u'The resource could not be found.', u'code': 404, u'title': u'Not Found'}}Neutron server returns request_ids: ['req-649eb926-7200-4a3d-ad91-b212ee5ef767']请执行:unset OS_TOKEN OS_URL           #初始化2、[root@controller1 ~]# neutron agent-listUnable to establish connection to http://controller1:9696/v2.0/agents.json请执行重新启动:systemctl restart neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service3、[root@controller1 ~]# openstack endpoint listDiscovering versions from the identity service failed when creating the password plugin. Attempting to determine version from URL.Unable to establish connection to http://192.168.2.201:35357/v3/auth/tokens: HTTPConnectionPool(host='192.168.2.201', port=35357): Max retries exceeded with url: /v3/auth/tokens (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x235f610>: Failed to establish a new connection: [Errno 111] \xe6\x8b\x92\xe7\xbb\x9d\xe8\xbf\x9e\xe6\x8e\xa5',))若出现此错误,请尝试重启httpd服务。

第二种创建网络方法:(已验证)
在那个项目下创建虚拟机,此处我们选择admin: . admin-openrc(若选择demo,相应切换即可)
执行:neutron net-create flat –shared –provider:physical_network provider –provider:network_type flat #provider表示在配置文件中的: provider:网卡名称。
这里写图片描述

创建子网:neutron subnet-create flat 192.168.2.0/24 –name flat-subnet –allocation-pool start=192.168.2.100,end=192.168.2.200 –dns-nameserver 192.168.2.1 –gateway 192.168.2.1
注:填写宿主机的内网网关,下面DNS和内网网关可以设置成宿主机的内网ip,下面192.168.2.100-200是分配给虚拟机的ip范围
查看子网:
这里写图片描述

注:创建的网络删除方法
1、查看是否有路由——neutron router-list
2、删除路由网关—–neutron router-gateway-clear 路由名称(查看路由后,直接输入要删除的路由)
3、删除路由接口—–neutron router-interface-delete 路由名称 路由接口(注:路由接口则是你在创建时键入的名称)
4、删除路由—–neutron router-delete 路由名称
5、删除子网—-neutron subnet-delete 子网名称(注:子网名称则是同删除路由相关而创建的子网)
6、删除网络—-neutron net-delete 网络名称
注:查看网络—-neutron net-list
查看子网—-neutron subnet-list
查看路由—neutron router-list
查看网络详细信息—neutron net-show 网络名称
查看安装的服务命令(比如):ps -e | grep nova
若没有路由则直接删除子网即可!
创建虚拟机(使用第二种网络创建虚拟机)
1、创建key
[root@controller1 ~]# . demo-openrc #这是在demo账号下常见虚拟机;如果要在admin账号下创建虚拟机,相应切换即可
[root@controller1 ~]# ssh-keygen -q -N “”
2、将公钥添加到虚拟机
[root@controller1 ~]# nova keypair-add –pub-key /root/.ssh/id_rsa.pub mykey(自定义名称)
这里写图片描述
3、创建安全组
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0 #表示可ping
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0 #表示可ssh连接
注:列出当前安全组:nova secgroup-list
列出某组的安全规则:nova secgroup-list-rules 安全组名称
创建自定义安全组:nova secgroup-create 安全组名称 “自定义说明”
添加规则:nova secgroup-add-rule 安全组名称 icmp -1 -1 0.0.0.0/0 #表示可ping
nova secgroup-add-rule 安全组名称 tcp 22 22 0.0.0.0/0 #表示可ssh连接
4、创建虚拟机
查看支持的虚拟机类型:
这里写图片描述
查看镜像:
这里写图片描述
查看网络:
这里写图片描述
创建虚拟机:nova boot –flavor m1.tiny –image cirros –nic net-id=f3a7aa1e-9799-47cd-a1d4-fb1e4d191f2d –security-group default –key-name mykey hello-instance
这里写图片描述

这里写图片描述

注:–flavor m1.tiny #表示选择的虚拟机类型
–image cirros #cirros表示的是镜像名称,可自定义
–key-name mykey #表示key的名称,可以自定义
hello-instance #表示虚拟机名称,可自定义
查看列表:
这里写图片描述
执行命令,让其Web界面打开虚拟机:(输入URL即可进入登陆界面)
这里写图片描述
使用浏览器登陆novnc:(谷歌浏览器)
这里写图片描述

注:登陆云主机用户名为:cirros 密码为默认密码:cubswin:) (图中有提示)
控制节点删除虚拟机使用的命令:nova delete ID(查看列表中的ID)
也可以在控制节点命令行中执行ssh命令,然后切换云主机:ssh cirros@IP;如果ssh切换提示失败等,我们把生成的key文件修改权限至700。在主机使用ssh切换时,需要使用默认用户名登陆,登陆成功后则使用su命令切换即可。 (查看列表中有相应IP显示)
如果使用ssh切换登陆时切换失败,原因大概有两种:
1、密钥对失效。
删除密钥对:openstack keypair delete 密钥对名称
创建密钥对:openstack keypair create –public-key ~/.ssh/id_rsa.pub demokey #demokey为密钥对名称
2、安全组没有生效。可自定义创建安全组
nova secgroup-create terry “allow ping and ssh” #其中terry为安全组名称
nova secgroup-add-rule terry icmp -1 -1 0.0.0.0/0 #为terry添加可ping规则
nova secgroup-add-rule terry tcp 22 22 0.0.0.0/0 #为terry添加ssh规则这里写图片描述

3、有时,在创建虚拟机时云系统的元数据服务机制没有正常运转,此时会有虚拟机创建后无法通过SSH登录的情况。出现这种现象的一个原因是虚拟机创建时没有从系统中下载到公钥,即虚拟机的/root/.ssh/authorized_key文件中没有写入我们创建的公钥,因而在后期无法通过私钥成功登录。

其他centOS镜像地址:http://cloud.centos.org/centos/
本次使用镜像下载地址:http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2
远程是否可以连接参考文献:https://sanwen8.cn/p/171lmWW.html
建议在控制节点使用ssh登陆,一般情况下centos镜像6.x默认用户为“centos-user”;centos7.x默认用户是“centos”;由于创建虚拟机时我们创建了公钥,所以不需要密码就可以登陆虚拟机,登陆到虚拟机时我们需要修改下密码,命令为:sudo passwd 用户名
一般使用ssh切换登陆云主机,首先都是使用默认普通用户登陆(可能公钥的问题);当我们ssh进入云主机时,在novnc中我们可以选择用户名root,密码则为我们修改的密码
这里写图片描述

安装dashboard,登陆web管理界面:(控制节点)
1、安装包:yum install openstack-dashboard -y
2、编辑/etc/openstack-dashboard/local_settings

OPENSTACK_HOST = "192.168.2.201"                #或者书写controller1ALLOWED_HOSTS = ['*', ]                     #表示允许所有主机访问仪表盘添加此句:SESSION_ENGINE = 'django.contrib.sessions.backends.file'#表示配置memcached会话存储服务CACHES = {    'default': {        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',        'LOCATION': '192.168.2.202:11211',}}OPENSTACK_KEYSTONE_URL=”http://%s:5000/v3”% OPENSTACK_HOST          #启用第3版认证APIOPENSTACK_API_VERSIONS = {                                          #配置API版本    "identity": 3,"image": 2,    "volume": 2,   }OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"                    #通过仪表盘创建的用户默认角色配置为userOPENSTACK_NEUTRON_NETWORK = {                           #web开启显示路由、浮动IP等    'enable_router': True,    'enable_quotas': True,    'enable_distributed_router': True,    'enable_ha_router': True,    'enable_lb': True,    'enable_firewall': True,    'enable_vpn': True,    'enable_fip_topology_check': True,}TIME_ZONE = "Asia/Shanghai"                             #配置时区

3、重启web服务器以及会话存储服务:systemctl restart httpd.service memcached.service
4、测试登陆:http://192.168.2.201/dashboard
这里写图片描述



注:此次安装到此为止,由于我也是跨入openstack不久,说明是否详细,还有好多没有考虑周到,也到此为止。仅供参考,方便记忆。
另外外网访问云主机参考另一篇。待续……………..



此处说明云主机访问外网:——————————————————–

使创建的VM主机联网,配置如下:
1、安装软件包:yum install squid #在控制节点
2、修改配置文件/etc/squid如下 #建议修改之前备份一份配置文件
把http_access deny all改为http_access allow all #表示所有用户都可以访问这个代理
把http_port 3128改为http_port 192.168.2.201:3128 #IP及端口是squid的代理IP及端口(也就是宿主机的IP)
3、启动前测试,命令如下:
这里写图片描述

这里写图片描述

使用命令启动:
这里写图片描述

查看3128端口是否开启: #其他——netstat -nltp。此命令是查看所有tcp端口
这里写图片描述

4、虚拟机VM(云主机)上进行squid代理配置
编辑系统环境变量配置文件/etc/profile,在文件最后位置添加即可:export http_proxy=http://192.168.2.201:3128
刷新配置文件:source /etc/profile
5、测试虚拟机是否对外访问:
访问:curl http://www.baidu.com
这里写图片描述

正常在线使用yum: yum list
这里写图片描述

——————–

存储模块安装待续

——————–

原创粉丝点击