OpenStack newton部署

更新时间:2024-07-03 14:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

OpenStack newton部署

一、 环境

共需要2台主机

192.168.100.181 controller为控制节点和计算节点 192.168.100.182 compute1为计算节点

安装centos7.2

关闭防火墙(控制节点和计算节点都做)

关闭selinux

/etc/sysconfig/selinux SELINUX=disabled setenforce 0 关闭iptables

systemctl start firewalld.service systemctl stop firewalld.service systemctl disable firewalld.service

下面的表格给出了需要密码的服务列表以及它们的关系:

密码名称 描述 密码名称 ADMIN_PASS CEILOMETER_DBPASS CEILOMETER_PASS CINDER_DBPASS CINDER_PASS DASH_DBPASS DEMO_PASS GLANCE_DBPASS GLANCE_PASS HEAT_DBPASS HEAT_DOMAIN_PASS HEAT_PASS KEYSTONE_DBPASS NEUTRON_DBPASS NEUTRON_PASS NOVA_DBPASS NOVA_PASS RABBIT_PASS SWIFT_PASS admin 用户密码 描述 数据库密码(不能使用变量) 数据库的root密码 Telemetry 服务的数据库密码 Telemetry 服务的 ceilometer 用户密码 块设备存储服务的数据库密码 块设备存储服务的 cinder 密码 Database password for the dashboard demo 用户的密码 镜像服务的数据库密码 镜像服务的 glance 用户密码 Orchestration服务的数据库密码 Orchestration 域的密码 Orchestration 服务中``heat``用户的密码 认证服务的数据库密码 网络服务的数据库密码 网络服务的 neutron 用户密码 计算服务的数据库密码 计算服务中``nova``用户的密码 RabbitMQ的guest用户密码 对象存储服务用户``swift``的密码 1. 控制节点服务器

控制节点共配置2块网卡 eth1:192.168.100.181

eth2:不设置ip为trunk模式 添加/etc/hosts

设置NTP服务

# yum install chrony 编辑/etc/chrony.conf allow192.168.100.0/24

允许192.168.100.0网段访问 启动NTP服务

# systemctl enable chronyd.service # systemctl start chronyd.service

# timedatectl set-timezone Asia/Shanghai 设置时区 # timedatectl status 查看时区

安装openstack源及软件包

yum install centos-release-openstack-newton yum upgrade

yum install python-openstackclient yum install openstack-selinux

yum install mariadbmariadb-server python2-PyMySQL yum install rabbitmq-server

yum install memcached python-memcached yum install openstack-keystone httpdmod_wsgi yum install openstack-glance

yum install openstack-nova-apiopenstack-nova-conductor openstack-nova-console

openstack-nova-novncproxyopenstack-nova-scheduler yum install openstack-nova-compute yum install openstack-neutron openstack-neutron-ml2

openstack-neutron-linuxbridgeebtablesipset yum install openstack-dashboard 开启nova用户的登录权限. usermod -s /bin/bash nova

生成秘钥(各个计算节点执行) 控制节点也需要互信 su– nova

/usr/bin/ssh-keygen -t rsa /usr/bin/ssh-keygen -t dsa 所有计算节点均配置

cat<< EOF > ~/.ssh/config Host *

StrictHostKeyChecking no UserKnownHostsFile=/dev/null EOF

分发ssh到各个计算节点 computer1

scp id_dsa.pub 192.168.100.181:/var/lib/nova/.ssh/id_dsa.pub3 scp id_rsa.pub 192.168.100.181:/var/lib/nova/.ssh/id_rsa.pub3 controller(192.168.100.181):

cat id_dsa.pub id_dsa.pub2 id_rsa.pub id_rsa.pub2 id_rsa.pub3 id_dsa.pub3 >authorized_keys chmod 644 authorized_keys

scpauthorized_keys computer1:/var/lib/nova/.ssh

修改权限

chownnova:nova /var/lib/nova/.ssh/id_rsa/var/lib/nova/.ssh/authorized_keys

数据库配置

创建/etc/my.cnf.d/openstack.cnf文件

[root@controller ~]# cat /etc/my.cnf.d/openstack.cnf

[mysqld]

bind-address = 192.168.100.181 default-storage-engine = innodb innodb_file_per_table max_connections = 4096

collation-server = utf8_general_ci character-set-server = utf8 启动mariadb

# systemctl enable mariadb.service

# systemctl start mariadb.servic

为了保证数据库服务的安全性,运行``mysql_secure_installation``脚本。特别需要说明的是,为数据库的root用户设置一个适当的密码。 # mysql_secure_installation Password:123456

完成下面的步骤以创建数据库:

1.用数据库连接客户端以 root 用户连接到数据库服务器: #mysql -u root -p

创建 keystone 数据库:

mysql>CREATE DATABASE keystone; 对keystone数据库授予恰当的权限:

mysql>GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY

'KEYSTONE_DBPASS';

mysql>GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY

'KEYSTONE_DBPASS';

用合适的密码替换 KEYSTONE_DBPASS 。(这边我们用keystone) 创建 glance 数据库

mysql> CREATE DATABASE glance; 对glance数据库授予恰当的权限

mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \\ IDENTIFIED BY 'GLANCE_DBPASS';

mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \\ IDENTIFIED BY 'GLANCE_DBPASS';

用一个合适的密码替换 GLANCE_DBPASS。(这边我们用glance) 创建 nova_api 和 nova 数据库: mysql> CREATE DATABASE nova_api; mysql> CREATE DATABASE nova; 对数据库进行正确的授权

mysql> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \\

IDENTIFIED BY 'NOVA_DBPASS';

mysql> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \\ IDENTIFIED BY 'NOVA_DBPASS';

mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \\ IDENTIFIED BY 'NOVA_DBPASS';

mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \\ IDENTIFIED BY 'NOVA_DBPASS';

用合适的密码代替 NOVA_DBPASS(这里我们用nova) 创建neutron数据库

mysql> CREATE DATABASE neutron;

对neutron数据库授予合适的访问权限,使用合适的密码替换NEUTRON_DBPASS mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \\ IDENTIFIED BY 'NEUTRON_DBPASS';

mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \\ IDENTIFIED BY 'NEUTRON_DBPASS'; (这里我们用密码:neutron)

rabbitmq配置 启动rabbitmq

# systemctl enable rabbitmq-server.service

# systemctl start rabbitmq-server.service

添加openstack用户

# rabbitmqctladd_useropenstack RABBIT_PASS 用合适的密码替换 RABBIT_PASS 给``openstack``用户配置写和读权限

#rabbitmqctlset_permissionsopenstack \

# rabbitmq-plugins list #查看支持的插件

# rabbitmq-plugins enable rabbitmq_management #启动插件 #systemctl restart rabbitmq-server.service #lsof -i:15672

访问RabbitMQ,访问地址是http://192.168.100.181:15672

默认用户名密码都是guest,浏览器添加openstack用户到组并登陆测试,连不上情况一般是防火墙没有关闭所致!

之后退出使用openstack登录 启动memcached

# systemctl enable memcached.service # systemctl start memcached.service

1. keystone配置

编辑/etc/keystone/keystone.conf配置文件

cat /etc/keystone/keystone.conf|grep -v \

[DEFAULT] [assignment] [auth]

[cache] [catalog] [cors]

[cors.subdomain] [credential] [database]

connection = mysql+pymysql://keystone:keystone@controller/keystone [domain_config] [endpoint_filter] [endpoint_policy] [eventlet_server] [federation] [fernet_tokens] provider = fernet [identity]

[identity_mapping] [kvs] [ldap]

[matchmaker_redis] [memcache] [oauth1] [os_inherit]

[oslo_messaging_amqp]

[oslo_messaging_notifications] [oslo_messaging_rabbit] [oslo_messaging_zmq] [oslo_middleware] [oslo_policy] [paste_deploy] [policy] [profiler] [resource] [revoke] [role] [saml]

[security_compliance] [shadow_users] [signing] [token]

[tokenless_auth] [trust]

初始化身份认证服务的数据库

# su -s /bin/sh -c \初始化Fernet keys:

# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone # keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

引导keystone服务

# keystone-manage bootstrap --bootstrap-password ADMIN_PASS \\ --bootstrap-admin-url http://controller:35357/v3/ \\ --bootstrap-internal-url http://controller:35357/v3/ \\ --bootstrap-public-url http://controller:5000/v3/ \\ --bootstrap-region-id RegionOne

ADMIN_PASS为登录密码和管理员密码(这边为admin) 配置Apache HTTP 服务

编辑/etc/httpd/conf/httpd.conf文件,配置ServerName选项为控制节点 ServerName controller

创建一个/usr/share/keystone/wsgi-keystone.conf连接

# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/ 启动HTTP服务

# systemctl enable httpd.service # systemctl start httpd.service 配置管理账户

$ export OS_USERNAME=admin

$ export OS_PASSWORD=ADMIN_PASS $ export OS_PROJECT_NAME=admin

$ export OS_USER_DOMAIN_NAME=default $ export OS_PROJECT_DOMAIN_NAME=default

$ export OS_AUTH_URL=http://controller:35357/v3 $ export OS_IDENTITY_API_VERSION=3

ADMIN_PASS为管理员密码(这边为admin) 创建服务项目 $ openstack project create --domain default --description \Project\service

创建演示项目

$ openstack project create --domain default --description \

创建demo用户

$ openstack user create --domain default --password-prompt demo

创建用户角色

$ openstack role create user

添加user用户到demo项目和用户中

$ openstack role add --project demo --user demo user 因为安全性的原因,关闭临时认证令牌机制:

编辑 /etc/keystone/keystone-paste.ini 文件,从[pipeline:public_api],

[pipeline:admin_api]和[pipeline:api_v3]部分删除admin_token_auth 。 设置临时os_auth_url和os_password环境变量 $ unset OS_AUTH_URL OS_PASSWORD 作为 admin 用户,请求认证令牌:

$ openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name

default --os-user-domain-name default --os-project-name admin --os-username admin token issue

此命令使用管理用户的密码

作为``demo`` 用户,请求认证令牌:

$ openstack --os-auth-url http://controller:5000/v3 --os-project-domain-name

default --os-user-domain-name default --os-project-name demo --os-username demo token issue

这个命令使用``demo`` 用户的密码和API端口5000,这样只会允许对身份认证服务API的

常规(非管理)访问。

创建脚本

创建 admin 和 ``demo``项目和用户创建客户端环境变量脚本。本指南的接下来的部分会引用这些脚本,为客户端操作加载合适的的凭证。 编辑文件 admin-openrc 并添加如下内容 export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=admin export OS_USERNAME=admin

export OS_PASSWORD=ADMIN_PASS

export OS_AUTH_URL=http://controller:35357/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2

将 ADMIN_PASS 替换为你在认证服务中为 admin 用户选择的密码。(这边为admin) 编辑文件 demo-openrc 并添加如下内容: export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=demo export OS_USERNAME=demo

export OS_PASSWORD=DEMO_PASS

export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2

将 DEMO_PASS 替换为你在认证服务中为 demo 用户选择的密码。(这边为demo) 使用脚本?

使用特定租户和用户运行客户端,你可以在运行之前简单地加载相关客户端脚本。 加载admin-openrc文件来身份认证服务的环境变量位置和admin项目和用户证书: $ . admin-openrc 请求认证令牌:

$ openstack token issue

镜像服务

获得 admin 凭证来获取只有管理员能执行的命令的访问权限: $ . admin-openrc

要创建服务证书,完成这些步骤:

$ openstack user create --domain default --password-prompt glance

这边我们用glance作为密码

添加admin角色到glance用户和service项目上

$ openstack role add --project service --user glance admin 创建glance服务实体

$ openstack service create --name glance --description \

创建镜像服务的 API 端点:

$ openstack endpoint create --region RegionOne image public http://controller:9292

$ openstack endpoint create --region RegionOne image internal http://controller:9292

$ openstack endpoint create --region RegionOne image admin http://controller:9292

编辑文件 /etc/glance/glance-api.conf 并完成如下动作

cat /etc/glance/glance-api.conf|grep -v \

[DEFAULT] [cors]

[cors.subdomain] [database]

connection = mysql+pymysql://glance:glance@controller/glance [glance_store] stores = file,http default_store = file

filesystem_store_datadir = /var/lib/glance/images/ [image_format]

[keystone_authtoken]

auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password

project_domain_name = default user_domain_name = default project_name = service username = glance password = glance [matchmaker_redis] [oslo_concurrency] [oslo_messaging_amqp]

[oslo_messaging_notifications] [oslo_messaging_rabbit] [oslo_messaging_zmq] [oslo_middleware] [oslo_policy] [paste_deploy] flavor = keystone [profiler]

[store_type_location_strategy] [task]

[taskflow_executor]

编辑文件 /etc/glance/glance-registry.conf并完成如下动作:

cat /etc/glance/glance-registry.conf|grep -v \[DEFAULT] [database]

connection = mysql+pymysql://glance:glance@controller/glance [keystone_authtoken]

auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password

project_domain_name = default user_domain_name = default project_name = service username = glance password = glance [matchmaker_redis] [oslo_messaging_amqp]

[oslo_messaging_notifications] [oslo_messaging_rabbit] [oslo_messaging_zmq] [oslo_policy] [paste_deploy] flavor = keystone [profiler]

写入镜像服务数据库

# su -s /bin/sh -c \启动镜像服务、配置他们随机启动

# systemctl enable openstack-glance-api.serviceopenstack-glance-registry.service # systemctl start openstack-glance-api.serviceopenstack-glance-registry.service 验证

获得 admin 凭证来获取只有管理员能执行的命令的访问权限 $ . admin-openrc 下载源镜像:

$ wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它

$ openstack image create \--disk-format qcow2 --container-format bare --public

确认镜像的上传并验证属性 $ openstack image list

NOVA服务配置

获得 admin 凭证来获取只有管理员能执行的命令的访问权限 $ . admin-openrc

要创建服务证书,完成这些步骤

$ openstack user create --domain default --password-prompt nova

这边我们密码用nova

给 nova 用户添加 admin 角色

$ openstack role add --project service --user nova admin 创建 nova 服务实体

$ openstack service create --name nova --description \

创建 Compute 服务 API 端点

$ openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%\\(tenant_id\\)s

$ openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%\\(tenant_id\\)s

$ openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%\\(tenant_id\\)s

编辑/etc/nova/nova.conf文件并完成下面的操作

cat /etc/nova/nova.conf|grep -v \[DEFAULT]

enabled_apis = osapi_compute,metadata

transport_url = rabbit://openstack:openstack@controller auth_strategy = keystone my_ip = 192.168.100.181 use_neutron = True

firewall_driver = nova.virt.firewall.NoopFirewallDriver allow_resize_to_same_host=True#打开调整云主机大小 cpu_allocation_ratio=16.0#cpu超分 ram_allocation_ratio=1.5#内存超分 disk_allocation_ratio=1.5#磁盘超分

scheduler_default_filters=RetryFilter,AvailabilityZoneFilter,RamFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter #打开调整云主机大小 [api_database]

connection = mysql+pymysql://nova:nova@controller/nova_api [barbican] [cache] [cells] [cinder] [cloudpipe] [conductor] [cors]

[cors.subdomain] [crypto] [database]

connection = mysql+pymysql://nova:nova@controller/nova [ephemeral_storage_encryption] [glance]

api_servers = http://controller:9292

[guestfs] [hyperv]

[image_file_url] [ironic]

[key_manager]

[keystone_authtoken]

auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password

project_domain_name = default user_domain_name = default project_name = service username = nova password = nova [libvirt]

virt_type = kvm [matchmaker_redis] [metrics] [mks] [neutron]

url = http://controller:9696

auth_url = http://controller:35357 auth_type = password

project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = neutron

service_metadata_proxy = True

metadata_proxy_shared_secret = METADATA_SECRET [osapi_v21]

[oslo_concurrency]

lock_path = /var/lib/nova/tmp [oslo_messaging_amqp]

[oslo_messaging_notifications] [oslo_messaging_rabbit] [oslo_messaging_zmq] [oslo_middleware] [oslo_policy] [placement]

[placement_database] [rdp]

[remote_debug] [serial_console] [spice] [ssl]

[trusted_computing] [upgrade_levels] [vmware] [vnc]

vncserver_listen = $my_ip

vncserver_proxyclient_address = $my_ip enabled = True

novncproxy_base_url = http://192.168.100.181:6080/vnc_auto.html [workarounds] [wsgi]

[xenserver] [xvp]

同步Compute 数据库:

# su -s /bin/sh -c \# su -s /bin/sh -c \启动 Compute 服务并将其设置为随系统启动

# systemctl enable openstack-nova-api.service \\

openstack-nova-consoleauth.serviceopenstack-nova-scheduler.service \\ openstack-nova-conductor.serviceopenstack-nova-novncproxy.service\\ libvirtd.serviceopenstack-nova-compute.service

# systemctl start openstack-nova-api.service \\

openstack-nova-consoleauth.serviceopenstack-nova-scheduler.service \\ openstack-nova-conductor.serviceopenstack-nova-novncproxy.service \\ libvirtd.serviceopenstack-nova-compute.service 验证

获得 admin 凭证来获取只有管理员能执行的命令的访问权限: $ . admin-openrc

列出服务组件,以验证是否成功启动并注册了每个进程 $ openstack compute service list

Neutron配置

获得 admin 凭证来获取只有管理员能执行的命令的访问权限 $ . admin-openrc

要创建服务证书,完成这些步骤 创建neutron用户

$ openstack user create --domain default --password-prompt neutron

这里用密码:neutron

添加admin角色到neutron用户

$ openstack role add --project service --user neutron admin 创建neutron服务实体

$ openstack service create --name neutron --description \network

创建网络服务API端点

$ openstack endpoint create --region RegionOne network public http://controller:9696

$ openstack endpoint create --region RegionOne network internal http://controller:9696

本文来源:https://www.bwwdw.com/article/8sk.html

Top