目录 OpenStack部署文档 1、网络拓扑结构 2、前提条件 3、Controller node安装MySQL并进行必要的配置 4、Controller node 安装 Identity servive 服务 keystone 5、Controller node 安装 Images servive 服务 Glance 6、Controller node 安装 Messaging service 服务 Zaqar 7、Compute node 安装 Compute servive 服务 Nova ====================================================================================================================================== OpenStack部署文档 1、网络拓扑结构 三个节点,分别为:Controller node、conpute node、network node controller node 两个接口:eth0(仅主机) 192.168.1.1 eth1(桥接) 10.53.50.240 compute node 两个网络接口:eth0(仅主机) 192.168.1.2 eth1(vmnet2) eth0网关地址指向192.168.1.1(使得node2可以通过node1连接外网) 2、前提条件 1、各节点间时间同步 2、可以基于主机名通信 编辑 /etc/hosts 文件 3、打开controller node的SNAT功能 iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 10.53.50.240 net.ipv4.ip_forward = 1 3、Controller node安装MySQL并进行必要的配置 innodb_file_per_table = on skip_name_resolve = on ====================================================================================================================================== 4、Controller node 安装 Identity servive 服务 keystone 1、介绍 为用户提供 Authentication (认证) 和高层次的 Authorization (授权) 功能以及服务目录提供了单点集成。。keystone的认证方式又两种: 基于token和基于账号的认证方式。 身份认证服务通常是用户与OpenStack交互的第一个服务。一旦通过身份验证,用户就可以使用他们的身份访问其他OpenStack服务。同样,其 他OpenStack服务利用身份认证服务来确保用户是合法的,并发现用户所请求的项目的位置。身份认证服务还可以与一些外部用户管理系统 (如LDAP)集成。用户和服务可以通过使用由身份服务管理的服务目录来定位其他服务。顾名思义,服务目录是OpenStack部署中可用服务的集 合。每个服务可以有一个或多个端点,每个端点可以是以下三种类型之一:admin,internal或public。在生产环境中,出于安全原因,不同类 型的终端类型可能会驻留在暴露给不同类型用户的单独网络中。例如,公共API网络可能从互联网上可见,因此客户可以管理他们的云。管理API 网络可能仅限于管理云基础架构的组织中的运营商。内部API网络可能仅限于包含OpenStack服务的主机。另外,OpenStack支持多个区域的可伸 缩性。在身份服务中创建的区域,服务和端点一起构成部署的服务目录。部署中的每个OpenStack服务都需要一个服务条目,并在Identity服务中 存储相应的端点。这可以在Identity Service安装和配置完成后完成。 2、安装 1、添加并启用rdo存储库 https://repos.fedorapeople.org/openstack/ 2、安装包介绍及安装 mod_wsgi:用于在Apache中托管基于Python的Web应用程序的接口。该适配器是完全用C代码针对Apache C运行时和在Apache中托管WSGI应用 程序比使用更低的开销用于mod_python或CGI的现有WSGI适配器。 penstack-utils:辅助实现OpenStack的安装 python-keystoneclient:keystone客户端程序 yum install openstack-keystone httpd mod_wsgi python2-keystoneclient openstack-utils python2-openstackclient 3、openstack-keystone程序包安装文件介绍 /etc/keystone # 配置文件目录 /etc/keystone/default_catalog.templates /etc/keystone/keystone-paste.ini /etc/keystone/keystone.conf # 主配置文件 /etc/keystone/logging.conf # 日志配置文件 /etc/keystone/policy.json # 策略配置文件 /etc/keystone/sso_callback_template.html /etc/logrotate.d/openstack-keystone /usr/bin/keystone-manage # keystone管理接口程序 /usr/bin/keystone-wsgi-admin /usr/bin/keystone-wsgi-public /usr/bin/openstack-keystone-sample-data /usr/lib/sysctl.d/openstack-keystone.conf /usr/share/doc/openstack-keystone-13.0.0 /usr/share/doc/openstack-keystone-13.0.0/README.rst /usr/share/keystone /usr/share/keystone/keystone-dist.conf /usr/share/keystone/keystone-schema.json /usr/share/keystone/keystone-schema.yaml /usr/share/keystone/policy.v3cloudsample.json /usr/share/keystone/sample_data.sh /usr/share/keystone/wsgi-keystone.conf /usr/share/licenses/openstack-keystone-13.0.0 /usr/share/licenses/openstack-keystone-13.0.0/LICENSE /usr/share/man/man1/keystone-manage.1.gz /var/lib/keystone /var/log/keystone /var/log/keystone/keystone.log 3、配置MariaDB # 创建数据库 CREATE DATABASE keystone; # 授权keystone用户可以远程连接数据库 GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'xjw,./qwe'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'node1' IDENTIFIED BY 'xjw,./qwe'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'xjw,./qwe'; FLUSH PRIVILEGES; 4、配置keystone.conf [database] # ... connection = mysql+pymysql://keystone:xjw,./qwe@192.168.1.1/keystone [token] # ... provider = fernet 5、初始化数据库 su -s /bin/sh -c "keystone-manage db_sync" keystone # 连接数据库,验证keystone数据库是否生成表格 6、初始化密钥存储库 keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone keystone-manage credential_setup --keystone-user keystone --keystone-group keystone 7、引导身份服务 keystone-manage bootstrap --bootstrap-password xjw,./qwe \ --bootstrap-admin-url http://10.53.50.240:35357/v3/ \ --bootstrap-internal-url http://10.53.50.240:5000/v3/ \ --bootstrap-public-url http://10.53.50.240:5000/v3/ \ --bootstrap-region-id RegionOne 注:这个过程将创建系统的第一个user、project、domain、service、endpoint。创建的第一个账号也就是admin,可以使用 该账号与keystone service进行交互。 8、配置httpd 添加 ServerName node1 配置段 9、创建指向/usr/share/keystone/wsgi-keystone.conf文件的链接 ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/ 10、配置管理员账号 $ 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 11、启动服务 systemctl enable httpd.service systemctl start httpd.servi 12、创建一个新域 openstack domain create --description "An Example Domain" example 12、创建项目 openstack project create --domain default --description "Service Project" service # 在default中创建一个service项目 openstack project create --domain default --description "Demo Project" demo # 在default中创建一个deno项目 13、在default中创建demo用户 openstack user create --domain default --password-prompt demo 14、创建user角色 openstack role create user 15、添加user角色到demo项目和demo用户(此条命令没有提示) openstack role add --project demo --user demo user 总结: 域 domain:Default、example 项目 project:admin、service、demo 用户 user:admin、demo 角色 role:admin、user 16、openstack domain命令 openstack domain -h # 查看域 openstack service -h # 查看服务 openstck role -h # 查看角色 openstack user -h # 查看用户 openstack role assignment list # 查看用户属于哪个角色 17、创建OpenStack客户端环境脚本前面的部分使用了环境变量和命令选项的组合来通过openstack客户端与Identity服务进行交互。 为了提高客户端操作的效率,OpenStack支持简单的客户端环境脚本,也称为OpenRC文件。这些脚本通常包含所有客户端的常用 选项,但也支持独特的选项。 (1). 创建文件 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:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2 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 (2). 导入并加载文件 $ . admin-openrc (3). openstack token issue 17、测试admin用户,验证keystone配置是否正常用户,验证keystone配置是否正常 openstack --os-auth-url http://10.53.50.240:35357/v3 --os-project-domain-name default \ --os-user-domain-name default --os-project-name admin --os-username admin token issue 18、测试demo用户,能分配到token,则说明keystone配置正常 openstack --os-auth-url http://10.53.50.240:5000/v3 --os-project-domain-name default \ --os-user-domain-name default --os-project-name demo --os-username demo token issue 19、创建并输出keystone服务的API(同上第七步,可不执行此步骤) 1、创建公有phblic的访问点,任何人都可以访问 openstack endpoint create --region RegionOne identity public http://10.53.50.240:5000/v3 2、创建私有internal访问点 openstack endpoint create --region RegionOne identity internal http:///10.53.50.240:5000/v3 3、创建admin访问点 openstack endpoint create --region RegionOne identity admin http://10.53.50.240:35357/v3 ====================================================================================================================================== 5、Controller node 安装 Images servive 服务 Glance 1、创建glance数据库 # mysql -u root -p # CREATE DATABASE glance; # GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'xjw,./qwe'; # GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'xjw,./qwe'; # FLUSH PRIVILEGES; 2、加载管理员权限环境变量 . admin-openrc 3、创建glance用户 openstack user create --domain default --password-prompt glance 4、添加admin角色到glance用户和service项目 openstack role add --project service --user glance admin 5、创建glance服务实体 openstack service create --name glance --description "OpenStack Image" image 6、创建image service API的访问端点 openstack endpoint create --region RegionOne image public http://10.53.50.240:9292 openstack endpoint create --region RegionOne image internal http://10.53.50.240:9292 openstack endpoint create --region RegionOne image admin http://10.53.50.240:9292 7、安装glance service 1、yum install openstack-glance python2-glanceclient 2、生成文件列表 /etc/glance /etc/glance/glance-api.conf # glance API配置文件 /etc/glance/glance-cache.conf # glance 缓存配置文件 /etc/glance/glance-registry.conf /etc/glance/glance-scrubber.conf /etc/glance/glance-swift.conf /usr/bin/glance-api /usr/bin/glance-cache-cleaner # 缓存管理工具 /usr/bin/glance-cache-manage # /usr/bin/glance-cache-prefetcher # /usr/bin/glance-cache-pruner # /usr/bin/glance-control /usr/bin/glance-manage # glance管理工具 /usr/bin/glance-registry /usr/bin/glance-replicator /usr/bin/glance-scrubber /usr/bin/glance-wsgi-api /usr/lib/systemd/system/openstack-glance-api.service # api服务脚本 /usr/lib/systemd/system/openstack-glance-registry.service /usr/lib/systemd/system/openstack-glance-scrubber.service /var/lib/glance /var/log/glance 8、glance service配置 1、编辑/etc/glance/glance-api.conf文件 [database] connection = mysql+pymysql://glance:xjw,./qwe@10.53.50.240/glance [keystone_authtoken] auth_uri = http://10.53.50.240:5000 auth_uri = http://10.53.50.240:35357 auth_type = password project_domain_name = default user_domain_name =default project_name = service username = glance password = xjw,./qwe [paste_deploy] flavor = keystone [glance_store] stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/images/ 2、编辑/etc/glance/glance-registry.conf文件 [database] connection = mysql+pymysql://glance:xjw,./qwe@10.53.50.240/glance [keystone_authtoken] auth_uri = http://10.53.50.240:5000 auth_uri = http://10.53.50.240:35357 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = xjw,./qwe [paste_deploy] flavor = keystone 3、初始化镜像服务数据库 su -s /bin/sh -c "glance-manage db_sync" glance systemctl status openstack-glance-api.service 4、设置开机自动启动 systemctl enable openstack-glance-api.service systemctl enable openstack-glance-registry.service 5、启动服务 systemctl start openstack-glance-api.service systemctl start openstack-glance-registry.service 9、验证是否安装成功 注:使用CirrOS验证Image服务的操作,这 是一个小型Linux映像,可帮助您测试OpenStack部署。 1、加载管理环境变量文件 . admin-openrc 2、下载测试镜像文件 wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img 3、上传映像文件到image服务 openstack image create "cirros" --file cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --public ====================================================================================================================================== 6、Controller node 安装 Messaging service 服务 Zaqar 1、 ====================================================================================================================================== 7、Compute node 安装 Compute servive 服务 Nova 1、