翼度科技»论坛 云主机 LINUX 查看内容

openstack完整的部署(最详细)

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
一:keystone组件部署

只在控制节点上面操作
1、安装和配置keystone
  1. # 1.安装keystone软件包
  2. # wsgi:使web服务器支持WSGI的插件
  3. # httpd:Apache软件包
  4. # openstack-keystone:keystone的软件包
  5. [root@controller ~]# yum install -y openstack-keystone httpd mod_wsgi
  6. # 查看keystone用户信息
  7. [root@controller ~]# cat /etc/passwd | grep keystone
  8. keystone:x:163:163:OpenStack Keystone Daemons:/var/lib/keystone:/sbin/nologin
  9. # 查看keystone用户组
  10. [root@controller ~]# cat /etc/group | grep keystone
  11. keystone:x:163:
  12. # 2.创建keystone的数据库并授权
  13. [root@controller ~]# mysql -uroot -p000000
  14. # 创建数据库
  15. MariaDB [(none)]> CREATE DATABASE keystone;
  16. Query OK, 1 row affected (0.000 sec)
  17. # 授权本地登录keystone用户
  18. MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '000000';
  19. Query OK, 0 rows affected (0.001 sec)
  20. # 授权任意远程主机登录keystone用户
  21. MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '000000';         
  22. Query OK, 0 rows affected (0.000 sec)
  23. # 退出数据库
  24. MariaDB [(none)]> quit
  25. Bye
  26. # 3.修改keystone配置文件
  27. [root@controller ~]# vi /etc/keystone/keystone.conf
  28. # 找到[database] 部分,加入如下内容,配置数据库连接信息
  29. connection=mysql+pymysql://keystone:000000@controller/keystone   
  30. # 找到[token] 部分,解开注释,配置令牌的加密方式
  31. provider = fernet
  32. # 4.初始化keytone数据库
  33. # 同步数据库
  34. # su keytone:表示切换到keytone用户
  35. # '-s /bin/sh':表示指定使用什么编译器来执行命令
  36. # '-c':表示具体执行的命令
  37. [root@controller ~]# su keystone -s /bin/sh -c "keystone-manage db_sync"
  38. # 检查数据库
  39. [root@controller ~]# mysql -uroot -p000000
  40. # 打开keystone数据库
  41. MariaDB [(none)]> use keystone;
  42. Reading table information for completion of table and column names
  43. You can turn off this feature to get a quicker startup with -A
  44. Database changed
  45. # 显示keytone数据库中的数据表
  46. MariaDB [keystone]> show tables;
  47. +------------------------------------+
  48. | Tables_in_keystone                 |
  49. +------------------------------------+
  50. | access_rule                        |
  51. | access_token                       |
  52. | application_credential             |
  53. | application_credential_access_rule |
  54. | application_credential_role        |
  55. # 出现如上所示的很多数据表,说明数据库同步成功。
复制代码
2、keystone组件初始化
  1. # 1.初始化Fernet密钥库
  2. [root@controller ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
  3. # 执行命令后创建/etc/keystone/fernet-keys,并在目录中生成两个fernet密钥,分别用于加密和解密
  4. [root@controller fernet-keys]# pwd
  5. /etc/keystone/fernet-keys
  6. [root@controller fernet-keys]# du -sh *
  7. 4.0K        0
  8. 4.0K        1
  9. [root@controller keystone]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
  10. # 执行命令后创建/etc/keystone/credential-keys目录,生成两个fetnet密钥,用于加密/解密用户凭证
  11. [root@controller credential-keys]# pwd
  12. /etc/keystone/credential-keys
  13. [root@controller credential-keys]# du -sh *
  14. 4.0K        0
  15. 4.0K        1
  16. # 2.初始化用户身份认证信息
  17. # openstack默认有一个admin用户,还没有对应的密码等登录所必须的信息。使用 `keystone-manage bootstrap` 初始化登录凭证。
  18. [root@controller ~]# keystone-manage bootstrap --bootstrap-password 000000 \   # 设置密码
  19. > --bootstrap-admin-url http://controller:5000/v3 \                            # 设置用户服务端点
  20. > --bootstrap-internal-url http://controller:5000/v3 \                         # 设置内部用户的服务端点
  21. > --bootstrap-public-url http://controller:5000/v3 \                           # 设置公共用户的服务端点
  22. > --bootstrap-region-id RegionOne                                              # 设置区域ID
  23. # 命令执行后,keystone数据库中就已经存放了登录需要的验证信息。
  24. # 3.配置web服务
  25. # (1)给apache增加wsgi支持
  26. # 将wsgi-keystone.conf文件软链接到'/etc/httpd/conf.d/目录',作为apache的配置文件
  27. [root@controller ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
  28. [root@controller ~]# ls /etc/httpd/conf.d/
  29. autoindex.conf  README  userdir.conf  welcome.conf  wsgi-keystone.conf
  30. # (2)修改apache服务器配置并启动
  31. [root@controller ~]# vi /etc/httpd/conf/httpd.conf
  32. # 修改为web服务所在的IP地址或域名
  33. 96 ServerName controller
  34. # (3)启动apache
  35. [root@controller ~]# systemctl start httpd
  36. [root@controller ~]# systemctl enable httpd
  37. Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
复制代码
3、模拟登录验证
  1. # 创建一个文件存储身份凭证
  2. [root@controller ~]# vi admin-login
  3. export OS_USERNAME=admin
  4. export OS_PASSWORD=000000
  5. export OS_PROJECT_NAME=admin
  6. export OS_USER_DOMAIN_NAME=Default
  7. export OS_PROJECT_DOMAIN_NAME=Default
  8. export OS_AUTH_URL=http://controller:5000/v3
  9. export OS_IDENTITY_API_VERSION=3
  10. export OS_IMAGE_API_VERSION=2
  11. # 导入环境变量
  12. [root@controller ~]# source admin-login
  13. # 查看现有环境信息
  14. [root@controller ~]# export -p
  15. declare -x OS_AUTH_URL="http://controller:5000/v3"
  16. declare -x OS_IDENTITY_API_VERSION="3"
  17. declare -x OS_IMAGE_API_VERSION="2"
  18. declare -x OS_PASSWORD="000000"
  19. declare -x OS_PROJECT_DOMAIN_NAME="Default"/
  20. declare -x OS_PROJECT_NAME="admin"
  21. declare -x OS_USERNAME="admin"
  22. declare -x OS_USER_DOMAIN_NAME="Default"
复制代码
4、检测keystone服务  
  1. # 在default域创建名为 'project' 的项目
  2. [root@controller ~]# openstack project create --domain default project
  3. +-------------+----------------------------------+
  4. | Field       | Value                            |
  5. +-------------+----------------------------------+
  6. | description |                                  |
  7. | domain_id   | default                          |
  8. | enabled     | True                             |
  9. | id          | e3a549077f354998aa1a75677cfde62e |
  10. | is_domain   | False                            |
  11. | name        | project                          |
  12. | options     | {}                               |
  13. | parent_id   | default                          |
  14. | tags        | []                               |
  15. +-------------+----------------------------------+
  16. # 查看现有项目列表
  17. [root@controller ~]# openstack project list
  18. +----------------------------------+---------+
  19. | ID                               | Name    |
  20. +----------------------------------+---------+
  21. | 4188570a34464b938ed3fa7e08681df8 | admin   |
  22. | e3a549077f354998aa1a75677cfde62e | project |
  23. +----------------------------------+---------+
  24. # 创建名为user的角色
  25. [root@controller ~]# openstack role create user
  26. +-------------+----------------------------------+
  27. | Field       | Value                            |
  28. +-------------+----------------------------------+
  29. | description | None                             |
  30. | domain_id   | None                             |
  31. | id          | 700ec993d3cf456fa591c03e72f37856 |
  32. | name        | user                             |
  33. | options     | {}                               |
  34. +-------------+----------------------------------+
  35. # 查看当前角色列表
  36. [root@controller ~]# openstack role list
  37. +----------------------------------+--------+
  38. | ID                               | Name   |
  39. +----------------------------------+--------+
  40. | 47670bbd6cc1472ab42db560637c7ebe | reader |
  41. | 5eee0910aeb844a1b82f48100da7adc9 | admin  |
  42. | 700ec993d3cf456fa591c03e72f37856 | user   |
  43. | bc2c8147bbd643629a020a6bd9591eca | member |
  44. +----------------------------------+--------+
  45. # 查看现有域列表
  46. [root@controller ~]# openstack domain list
  47. +---------+---------+---------+--------------------+
  48. | ID      | Name    | Enabled | Description        |
  49. +---------+---------+---------+--------------------+
  50. | default | Default | True    | The default domain |
  51. +---------+---------+---------+--------------------+
  52. # 查看现有用户列表
  53. [root@controller ~]# openstack user list
  54. +----------------------------------+-------+
  55. | ID                               | Name  |
  56. +----------------------------------+-------+
  57. | f4f16d960e0643d7b5a35db152c87dae | admin |
  58. +----------------------------------+-------+
复制代码
二:glacne部署  

安装openstack镜像服务,只在控制节点进行操作  
1、安装glance
  1. # 1.安装glance软件包
  2. # 原生的源缺包,把阿里的源下载到这个路径
  3. [root@controller yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-7.repo
  4. [root@controller ~]# yum install -y openstack-glance
  5. # 安装后会自动生成glance用户和用户组
  6. [root@controller ~]# cat /etc/passwd | grep glance
  7. glance:x:161:161:OpenStack Glance Daemons:/var/lib/glance:/sbin/nologin
  8. [root@controller ~]# cat /etc/group | grep glance
  9. glance:x:161:
  10. # 2.创建glance数据库并授权
  11. # 连接数据库
  12. [root@controller ~]# mysql -uroot -p000000
  13. # 新建glance数据库
  14. MariaDB [(none)]> CREATE DATABASE glance;
  15. Query OK, 1 row affected (0.001 sec)
  16. # 为新数据库授权本地和远程登录glance用户
  17. MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '000000';
  18. Query OK, 0 rows affected (0.001 sec)
  19. MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '000000';
  20. Query OK, 0 rows affected (0.001 sec)
  21. # 退出数据库
  22. MariaDB [(none)]> quit
  23. Bye
复制代码
2、配置glance

glacne的配置文件是/etc/glance/glance-api.conf,修改可以实现glacne与数据库及keystone的连接
  1. # 1.备份配置文件
  2. [root@controller ~]# cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.bak
  3. # 2.去掉配置文件注释和空行
  4. # grep:查找文件中符合条件的字符串。 -E:采用正则表达式;-v:匹配所有不满足正则的条件(反选)
  5. # ^:以什么开头; $:匹配字符结尾;|:匹配|左或|右的字符
  6. [root@controller ~]# grep -Ev '^$|#' /etc/glance/glance-api.conf.bak > /etc/glance/glance-api.conf
  7. # 3.编辑配置文件
  8. # default_store = file:默认存储系统为本地系统
  9. # filesystem_store_datadir = /var/lib/glance/images/ : 镜像文件实际存储的目录
  10. [root@controller ~]# vi /etc/glance/glance-api.conf
  11. [database]
  12. connection = mysql+pymysql://glance:000000@controller/glance
  13. [glance_store]
  14. stores = file
  15. default_store = file                                 
  16. filesystem_store_datadir = /var/lib/glance/images/
  17. [keystone_authtoken]
  18. auth_url = http://controller:5000
  19. memcached_servers = controller:11211
  20. auth_type = password
  21. username = glance
  22. password = 000000
  23. project_name = project
  24. user_domain_name = Default
  25. project_domain_name = Default
  26. [paste_deploy]
  27. flavor = keystone
  28. # 4.初始化数据库
  29. # 同步数据库:将安装文件中的数据库表信息填入数据库中
  30. [root@controller ~]# su glance -s /bin/sh -c "glance-manage db_sync"
  31. # 检查数据库
  32. [root@controller ~]# mysql -uroot -p000000
  33. MariaDB [(none)]> use glance
  34. MariaDB [glance]> show tables;
  35. +----------------------------------+
  36. | Tables_in_glance                 |
  37. +----------------------------------+
  38. | alembic_version                  |
  39. | image_locations                  |
  40. | image_members                    |
  41. | image_properties                 |
  42. | image_tags                       |
  43. | images                           |
  44. .....
复制代码
3、glance组件初始化

glance安装配置成功后,需要给glance初始化用户,密码并分配角色,初始化服务和服务端点  
(1)创建glance用户并分配角色
  1. # 导入环境变量模拟登录
  2. [root@controller ~]# source admin-login
  3. # 在default域创建名为glance,密码为000000的用户
  4. [root@controller ~]# openstack user create --domain default --password 000000 glance
  5. +---------------------+----------------------------------+
  6. | Field               | Value                            |
  7. +---------------------+----------------------------------+
  8. | domain_id           | default                          |
  9. | enabled             | True                             |
  10. | id                  | 81238b556a444c8f80cb3d7dc72a24d3 |
  11. | name                | glance                           |
  12. | options             | {}                               |
  13. | password_expires_at | None                             |
  14. +---------------------+----------------------------------+
  15. # 查看当前已有的项目
  16. [root@controller ~]# openstack project list
  17. +----------------------------------+---------+
  18. | ID                               | Name    |
  19. +----------------------------------+---------+
  20. | 4188570a34464b938ed3fa7e08681df8 | admin   |
  21. | e3a549077f354998aa1a75677cfde62e | project |
  22. +----------------------------------+---------+
  23. # 查看已有的用户
  24. [root@controller ~]# openstack user list
  25. +----------------------------------+--------+
  26. | ID                               | Name   |
  27. +----------------------------------+--------+
  28. | f4f16d960e0643d7b5a35db152c87dae | admin  |
  29. | 81238b556a444c8f80cb3d7dc72a24d3 | glance |
  30. +----------------------------------+--------+
  31. # 授予glance用户操作project项目时的admin角色权限
  32. [root@controller ~]# openstack role add --project project --user glance admin
  33. # 查看glance用户详情
  34. [root@controller ~]# openstack user show glance
  35. +---------------------+----------------------------------+
  36. | Field               | Value                            |
  37. +---------------------+----------------------------------+
  38. | domain_id           | default                          |
  39. | enabled             | True                             |
  40. | id                  | 81238b556a444c8f80cb3d7dc72a24d3 |
  41. | name                | glance                           |
  42. | options             | {}                               |
  43. | password_expires_at | None                             |
  44. +---------------------+----------------------------------+
复制代码
(2)创建glacne服务及服务端点
  1. # 1.创建服务
  2. # 创建名为glance,类型为image的服务
  3. [root@controller ~]# openstack service create --name glance image
  4. +---------+----------------------------------+
  5. | Field   | Value                            |
  6. +---------+----------------------------------+
  7. | enabled | True                             |
  8. | id      | 324a07034ea4453692570e3edf73cf2c |
  9. | name    | glance                           |
  10. | type    | image                            |
  11. +---------+----------------------------------+
  12. # 2.创建镜像服务端点
  13. # 服务端点有三种:公共用户(public)、内部组件(internal)、Admin用户(admin)服务的地址。
  14. # 创建公共用户访问服务端点
  15. [root@controller ~]# openstack endpoint create --region RegionOne glance public http://controller:9292
  16. +--------------+----------------------------------+
  17. | Field        | Value                            |
  18. +--------------+----------------------------------+
  19. | enabled      | True                             |
  20. | id           | ab3208eb36fd4a8db9c90b9113da9bbb |
  21. | interface    | public                           |
  22. | region       | RegionOne                        |
  23. | region_id    | RegionOne                        |
  24. | service_id   | 324a07034ea4453692570e3edf73cf2c |
  25. | service_name | glance                           |
  26. | service_type | image                            |
  27. | url          | http://controller:9292           |
  28. +--------------+----------------------------------+
  29. # 创建内部组件访问服务端点
  30. [root@controller ~]# openstack endpoint create --region RegionOne glance internal http://controller:9292
  31. +--------------+----------------------------------+
  32. | Field        | Value                            |
  33. +--------------+----------------------------------+
  34. | enabled      | True                             |
  35. | id           | 54994f15e8184e099334760060b9e2a9 |
  36. | interface    | internal                         |
  37. | region       | RegionOne                        |
  38. | region_id    | RegionOne                        |
  39. | service_id   | 324a07034ea4453692570e3edf73cf2c |
  40. | service_name | glance                           |
  41. | service_type | image                            |
  42. | url          | http://controller:9292           |
  43. +--------------+----------------------------------+
  44. # 创建Admin用户访问服务端点
  45. [root@controller ~]# openstack endpoint create --region RegionOne glance admin http://controller:9292
  46. +--------------+----------------------------------+
  47. | Field        | Value                            |
  48. +--------------+----------------------------------+
  49. | enabled      | True                             |
  50. | id           | 97ae61936255471f9f55858cc0443e61 |
  51. | interface    | admin                            |
  52. | region       | RegionOne                        |
  53. | region_id    | RegionOne                        |
  54. | service_id   | 324a07034ea4453692570e3edf73cf2c |
  55. | service_name | glance                           |
  56. | service_type | image                            |
  57. | url          | http://controller:9292           |
  58. +--------------+----------------------------------+
  59. # 查克服务端点
  60. [root@controller ~]# openstack endpoint list
  61. +----------------------------------+-----------+--------------+--------------+---------+-----------+---------------------------+
  62. | ID                               | Region    | Service Name | Service Type | Enabled | Interface | URL                       |
  63. +----------------------------------+-----------+--------------+--------------+---------+-----------+---------------------------+
  64. | 0d31919afb564c8aa52ec5eddf474a55 | RegionOne | keystone     | identity     | True    | admin     | http://controller:5000/v3 |
  65. | 243f1e7ace4f444cba2978b900aeb165 | RegionOne | keystone     | identity     | True    | internal  | http://controller:5000/v3 |
  66. | 54994f15e8184e099334760060b9e2a9 | RegionOne | glance       | image        | True    | internal  | http://controller:9292    |
  67. | 702df46845be40fb9e75fb988314ee90 | RegionOne | keystone     | identity     | True    | public    | http://controller:5000/v3 |
  68. | 97ae61936255471f9f55858cc0443e61 | RegionOne | glance       | image        | True    | admin     | http://controller:9292    |
  69. | ab3208eb36fd4a8db9c90b9113da9bbb | RegionOne | glance       | image        | True    | public    | http://controller:9292    |
  70. +----------------------------------+-----------+--------------+--------------+---------+-----------+---------------------------+
复制代码
(3)启动glacne服务
  1. # 开机启动glance服务
  2. [root@controller ~]# systemctl enable openstack-glance-api
  3. Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-glance-api.service to /usr/lib/systemd/system/openstack-glance-api.service.
  4. # 启动glance服务
  5. [root@controller ~]# systemctl start openstack-glance-api
复制代码
4、验证glacne服务  
  1. # 方法一:查看端口占用情况(9292是否被占用)
  2. [root@controller ~]# netstat -tnlup | grep 9292
  3. tcp        0      0 0.0.0.0:9292            0.0.0.0:*               LISTEN      5740/python2  
  4. # 方法二:查看服务运行状态(active (running)说明服务正在运行)
  5. [root@controller ~]# systemctl status openstack-glance-api
  6. ● openstack-glance-api.service - OpenStack Image Service (code-named Glance) API server
  7.    Loaded: loaded (/usr/lib/systemd/system/openstack-glance-api.service; enabled; vendor preset: disabled)
  8.    Active: active (running) since Wed 2022-10-19 17:09:13 CST;
复制代码
5、用glacne制作镜像  
  1. # 安装lrzsz工具
  2. [root@controller ~]# yum install -y lrzsz
  3. # 上传cirros-0.5.1-x86_64-disk.img 到/root目录
  4. [root@controller ~]# rz
  5. z waiting to receive.**B0100000023be50
  6. [root@controller ~]# ls
  7. admin-login      cirros-0.5.1-x86_64-disk.img
  8. # glance创建镜像
  9. [root@controller ~]# openstack image create --file cirros-0.5.1-x86_64-disk.img --disk-format qcow2 --container-format bare --public cirros
  10. # 查看镜像列表
  11. [root@controller ~]# openstack image list
  12. +--------------------------------------+--------+--------+
  13. | ID                                   | Name   | Status |
  14. +--------------------------------------+--------+--------+
  15. | a859fddb-3ec1-4cd8-84ec-482112af929b | cirros | active |
  16. +--------------------------------------+--------+--------+
  17. # 删除镜像
  18. [root@controller ~]# openstack image delete a859fddb-3ec1-4cd8-84ec-482112af929b
  19. # 重新创镜像
  20. [root@controller ~]# openstack image create --file cirros-0.5.1-x86_64-disk.img --disk-format qcow2 --container-format bare --public cirros
  21. +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  22. | Field            | Value                                                                                                                                                                                      |
  23. +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  24. | checksum         | 1d3062cd89af34e419f7100277f38b2b                                                                                                                                                           |
  25. | container_format | bare                                                                                                                                                                                       |
  26. | created_at       | 2022-10-19T09:20:03Z                                                                                                                                                                       |
  27. | disk_format      | qcow2                                                                                                                                                                                      |
  28. | file             | /v2/images/7096885c-0a58-4086-8014-b92affceb0e8/file                                                                                                                                       |
  29. | id               | 7096885c-0a58-4086-8014-b92affceb0e8                                                                                                                                                       |
  30. | min_disk         | 0                                                                                                                                                                                          |
  31. | min_ram          | 0                                                                                                                                                                                          |
  32. | name             | cirros                                                                                                                                                                                     |
  33. | owner            | 4188570a34464b938ed3fa7e08681df8                                                                                                                                                           |
  34. | properties       | os_hash_algo='sha512', os_hash_value='553d220ed58cfee7dafe003c446a9f197ab5edf8ffc09396c74187cf83873c877e7ae041cb80f3b91489acf687183adcd689b53b38e3ddd22e627e7f98a09c46', os_hidden='False' |
  35. | protected        | False                                                                                                                                                                                      |
  36. | schema           | /v2/schemas/image                                                                                                                                                                          |
  37. | size             | 16338944                                                                                                                                                                                   |
  38. | status           | active                                                                                                                                                                                     |
  39. | tags             |                                                                                                                                                                                            |
  40. | updated_at       | 2022-10-19T09:20:03Z                                                                                                                                                                       |
  41. | virtual_size     | None                                                                                                                                                                                       |
  42. | visibility       | public                                                                                                                                                                                     |
  43. +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  44. # 查看镜像物理文件
  45. # /var/lib/glance/images/文件夹是 glance-api.conf配置文件中定义镜像文件存储的位置。
  46. [root@controller ~]# ll /var/lib/glance/images/
  47. total 15956
  48. -rw-r----- 1 glance glance 16338944 Oct 19 17:20 7096885c-0a58-4086-8014-b92affceb0e8
复制代码
三:放置服务(placement)部署

从stein版本开始,将系统资源的监控功能从nova中独立出来,成为一个独立的组件
1、安装placement软件包
  1. # 安装placement软件包
  2. # 安装好会自动生成placement用户和用户组
  3. [root@controller ~]# yum install -y openstack-placement-api
  4. # 查看确认用户和用户组已经创建
  5. [root@controller ~]# cat /etc/passwd | grep placement
  6. placement:x:993:990:OpenStack Placement:/:/bin/bash
  7. [root@controller ~]# cat /etc/group | grep placement
  8. placement:x:990:
  9. # 登录数据库
  10. [root@controller ~]# mysql -uroot -p000000
  11. # 创建placement数据库
  12. MariaDB [(none)]> create database placement;
  13. Query OK, 1 row affected (0.000 sec)
  14. # 数据库授权
  15. MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY '000000';
  16. Query OK, 0 rows affected (0.001 sec)
  17. MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY '000000';
  18. Query OK, 0 rows affected (0.000 sec)
  19. MariaDB [(none)]> quit
  20. Bye
复制代码
2、配置placement服务
  1. # 备份配置文件
  2. [root@controller ~]# cp /etc/placement/placement.conf /etc/placement/placement.conf.bak
  3. [root@controller ~]# ls /etc/placement/
  4. placement.conf  placement.conf.bak  policy.json
  5. # 去掉配置文件注释和空行
  6. [root@controller ~]# grep -Ev '^$|#' /etc/placement/placement.conf.bak  > /etc/placement/placement.conf
  7. [root@controller ~]# cat /etc/placement/placement.conf
  8. [DEFAULT]
  9. [api]
  10. [cors]
  11. [keystone_authtoken]
  12. [oslo_policy]
  13. [placement]
  14. [placement_database]
  15. [profiler]
  16. # 编辑配置文件
  17. [root@controller ~]# vi /etc/placement/placement.conf
  18. [api]
  19. auth_strategy = keystone
  20. [keystone_authtoken]
  21. auth_url = http://controller:5000
  22. memcached_servers = controller:11211
  23. auth_type = password
  24. project_domain_name = Default
  25. user_domain_name = Default
  26. project_name = project
  27. username = placement
  28. password = 000000
  29. [placement_database]
  30. connection = mysql+pymysql://placement:000000@controller/placement
  31. # 编辑修改apache配置文件
  32. # 在"VirtualHost"节点加入如下 Directory内容
  33. [root@controller ~]# vi /etc/httpd/conf.d/00-placement-api.conf
  34. Listen 8778
  35. <VirtualHost *:8778>
  36.   WSGIProcessGroup placement-api
  37.   ...略
  38.   <Directory /usr/bin>
  39.     <IfVersion >= 2.4>
  40.       Require all granted
  41.     </IfVersion>
  42.   </Directory>
  43. </VirtualHost>
  44. # 查看Apache版本号
  45. [root@controller ~]# httpd -v
  46. Server version: Apache/2.4.6 (CentOS)
  47. Server built:   Jan 25 2022 14:08:43
  48. # 同步数据库,将数据库的表信息填充进数据库
  49. [root@controller ~]# su placement -s /bin/sh -c "placement-manage db sync"
  50. # 检查数据库同步
  51. [root@controller ~]# mysql -uroot -p000000
  52. MariaDB [(none)]> use placement;
  53. MariaDB [placement]> show tables;
  54. +------------------------------+
  55. | Tables_in_placement          |
  56. +------------------------------+
  57. | alembic_version              |
  58. | allocations                  |
  59. | consumers                    |
  60. | inventories                  |
  61. | placement_aggregates         |
  62. | projects                     |
  63. | resource_classes             |
  64. | resource_provider_aggregates |
  65. | resource_provider_traits     |
  66. | resource_providers           |
  67. | traits                       |
  68. | users                        |
  69. +------------------------------+
  70. 12 rows in set (0.000 sec)
复制代码
3、placement组件初始化  
  1. # 导入环境变量模拟登录
  2. [root@controller ~]# source admin-login
  3. # 创建placement用户
  4. [root@controller ~]# openstack user create --domain default --password 000000 placement
  5. +---------------------+----------------------------------+
  6. | Field               | Value                            |
  7. +---------------------+----------------------------------+
  8. | domain_id           | default                          |
  9. | enabled             | True                             |
  10. | id                  | e0d6a46f9b1744d8a7ab0332ab45d59c |
  11. | name                | placement                        |
  12. | options             | {}                               |
  13. | password_expires_at | None                             |
  14. +---------------------+----------------------------------+
  15. # 给placement用户分配admin角色
  16. [root@controller ~]# openstack role add --project project --user placement admin
  17. # 创建placement服务
  18. [root@controller ~]# openstack service create --name placement placement
  19. +---------+----------------------------------+
  20. | Field   | Value                            |
  21. +---------+----------------------------------+
  22. | enabled | True                             |
  23. | id      | da038496edf04ce29d7d3d6b8e647755 |
  24. | name    | placement                        |
  25. | type    | placement                        |
  26. +---------+----------------------------------+
  27. # 查看当前已经创建的服务列表
  28. [root@controller ~]# openstack service list
  29. +----------------------------------+-----------+-----------+
  30. | ID                               | Name      | Type      |
  31. +----------------------------------+-----------+-----------+
  32. | 324a07034ea4453692570e3edf73cf2c | glance    | image     |
  33. | 5d25b4ed1443497599707e043866eaae | keystone  | identity  |
  34. | da038496edf04ce29d7d3d6b8e647755 | placement | placement |
  35. +----------------------------------+-----------+-----------+
  36. # 创建服务端点
  37. # placement服务端点有三个:公众用户、内部组件、Admin用户(admin)服务。
  38. [root@controller ~]# openstack endpoint create --region RegionOne placement public http://controller:8778
  39. +--------------+----------------------------------+
  40. | Field        | Value                            |
  41. +--------------+----------------------------------+
  42. | enabled      | True                             |
  43. | id           | da0c279c9a394d0f80e7a33acb9e0d8d |
  44. | interface    | public                           |
  45. | region       | RegionOne                        |
  46. | region_id    | RegionOne                        |
  47. | service_id   | da038496edf04ce29d7d3d6b8e647755 |
  48. | service_name | placement                        |
  49. | service_type | placement                        |
  50. | url          | http://controller:8778           |
  51. +--------------+----------------------------------+
  52. [root@controller ~]# openstack endpoint create --region RegionOne placement internal http://controller:8778
  53. +--------------+----------------------------------+
  54. | Field        | Value                            |
  55. +--------------+----------------------------------+
  56. | enabled      | True                             |
  57. | id           | 79ca63ffd52d4d96b418cdf962c1e3ca |
  58. | interface    | internal                         |
  59. | region       | RegionOne                        |
  60. | region_id    | RegionOne                        |
  61. | service_id   | da038496edf04ce29d7d3d6b8e647755 |
  62. | service_name | placement                        |
  63. | service_type | placement                        |
  64. | url          | http://controller:8778           |
  65. +--------------+----------------------------------+
  66. [root@controller ~]# openstack endpoint create --region RegionOne placement admin http://controller:8778
  67. +--------------+----------------------------------+
  68. | Field        | Value                            |
  69. +--------------+----------------------------------+
  70. | enabled      | True                             |
  71. | id           | fbee454f73d64bb18a52d8696c7aa596 |
  72. | interface    | admin                            |
  73. | region       | RegionOne                        |
  74. | region_id    | RegionOne                        |
  75. | service_id   | da038496edf04ce29d7d3d6b8e647755 |
  76. | service_name | placement                        |
  77. | service_type | placement                        |
  78. | url          | http://controller:8778           |
  79. +--------------+----------------------------------+
  80. # 查看检查
  81. [root@controller ~]# openstack endpoint list
复制代码
4、placement组件检测  

(1)检测placement组件的运行状态的2种方法
  1. # 方法一:查看端口占用情况(8778是否被占用)
  2. [root@controller ~]# netstat -tnlup | grep 8778
  3. tcp6       0      0 :::8778                 :::*                    LISTEN      1018/httpd
  4. # 方法二:查看服务端点通信
  5. [root@controller ~]# curl http://controller:8778
  6. {"versions": [{"status": "CURRENT", "min_version": "1.0", "max_version": "1.36", "id": "v1.0", "links": [{"href": "", "rel": "self"}]}]}
复制代码
(2)安装完成情况检查  
  1. # 1.控制节点是否建立了placement用户
  2. [root@controller ~]# cat /etc/passwd | grep placement
  3. placement:x:993:990:OpenStack Placement:/:/bin/bash
  4. # 2.控制节点是否创建placement用户组
  5. [root@controller ~]# cat /etc/group | grep placement
  6. placement:x:990:
  7. # 3.是否创建placement数据库
  8. MariaDB [(none)]> show databases;
  9. +--------------------+
  10. | Database           |
  11. +--------------------+
  12. | glance             |
  13. | information_schema |
  14. | keystone           |
  15. | mysql              |
  16. | performance_schema |
  17. | placement          |
  18. +--------------------+
  19. # 4.查看placement用户对数据库的权限
  20. MariaDB [(none)]> show grants for placement@'%';
  21. MariaDB [(none)]> show grants for placement@'localhost';
  22. # 5.查看placement数据表列表
  23. MariaDB [(none)]> use placement;
  24. MariaDB [placement]> show tables;
  25. +------------------------------+
  26. | Tables_in_placement          |
  27. +------------------------------+
  28. | alembic_version              |
  29. | allocations                  |
  30. | consumers                    |
  31. # 6.查看placement用户是否创建
  32. [root@controller ~]# openstack user list
  33. +----------------------------------+-----------+
  34. | ID                               | Name      |
  35. +----------------------------------+-----------+
  36. | f4f16d960e0643d7b5a35db152c87dae | admin     |
  37. | 81238b556a444c8f80cb3d7dc72a24d3 | glance    |
  38. | e0d6a46f9b1744d8a7ab0332ab45d59c | placement |
  39. +----------------------------------+-----------+
  40. # 7.查看placement用户是否有admin权限
  41. # 查看用户id和角色id,然后在role assignment列表中查看id对应关系
  42. [root@controller ~]# openstack user list
  43. +----------------------------------+-----------+
  44. | ID                               | Name      |
  45. +----------------------------------+-----------+
  46. | f4f16d960e0643d7b5a35db152c87dae | admin     |
  47. | 81238b556a444c8f80cb3d7dc72a24d3 | glance    |
  48. | e0d6a46f9b1744d8a7ab0332ab45d59c | placement |
  49. +----------------------------------+-----------+
  50. [root@controller ~]# openstack role list
  51. +----------------------------------+--------+
  52. | ID                               | Name   |
  53. +----------------------------------+--------+
  54. | 47670bbd6cc1472ab42db560637c7ebe | reader |
  55. | 5eee0910aeb844a1b82f48100da7adc9 | admin  |
  56. | 700ec993d3cf456fa591c03e72f37856 | user   |
  57. | bc2c8147bbd643629a020a6bd9591eca | member |
  58. +----------------------------------+--------+
  59. [root@controller ~]# openstack role assignment list
  60. +----------------------------------+----------------------------------+-------+----------------------------------+--------+--------+-----------+
  61. | Role                             | User                             | Group | Project                          | Domain | System | Inherited |
  62. +----------------------------------+----------------------------------+-------+----------------------------------+--------+--------+-----------+
  63. | 5eee0910aeb844a1b82f48100da7adc9 | 81238b556a444c8f80cb3d7dc72a24d3 |       | e3a549077f354998aa1a75677cfde62e |        |        | False     |
  64. | 5eee0910aeb844a1b82f48100da7adc9 | e0d6a46f9b1744d8a7ab0332ab45d59c |       | e3a549077f354998aa1a75677cfde62e |        |        | False     |
  65. | 5eee0910aeb844a1b82f48100da7adc9 | f4f16d960e0643d7b5a35db152c87dae |       | 4188570a34464b938ed3fa7e08681df8 |        |        | False     |
  66. | 5eee0910aeb844a1b82f48100da7adc9 | f4f16d960e0643d7b5a35db152c87dae |       |                                  |        | all    | False     |
  67. +----------------------------------+----------------------------------+-------+----------------------------------+--------+--------+-----------+
  68. # 8.placement服务是否创建
  69. [root@controller ~]# openstack service list
  70. +----------------------------------+-----------+-----------+
  71. | ID                               | Name      | Type      |
  72. +----------------------------------+-----------+-----------+
  73. | 324a07034ea4453692570e3edf73cf2c | glance    | image     |
  74. | 5d25b4ed1443497599707e043866eaae | keystone  | identity  |
  75. | da038496edf04ce29d7d3d6b8e647755 | placement | placement |
  76. +----------------------------------+-----------+-----------+
  77. # 9.检测placement服务端点
  78. [root@controller ~]# openstack endpoint list
  79. # 10.查看placement服务端口是否正常
  80. [root@controller ~]# curl http://controller:8778
  81. {"versions": [{"status": "CURRENT", "min_version": "1.0", "max_version": "1.36", "id": "v1.0", "links": [{"href": "", "rel": "self"}]}]} 
复制代码
四:计算服务nova部署  

nova负责云主机实例的创建,删除,启动,停止等
1、安装配置控制节点nova服务

(1)安装nova软件包
  1. # 安装nova相关软件包
  2. [root@controller ~]# yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-scheduler openstack-nova-novncproxy
  3. # 查看nova用户
  4. [root@controller ~]# cat /etc/passwd | grep nova
  5. nova:x:162:162:OpenStack Nova Daemons:/var/lib/nova:/sbin/nologin
  6. # 查看nova用户组
  7. [root@controller ~]# cat /etc/group | grep nova
  8. nobody:x:99:nova
  9. nova:x:162:nova
复制代码
(2)创建nova数据库并授权  

支持nova组件的数据库有三个:nova_api,nova_cell0,nova
  1. # 登录数据库
  2. [root@controller ~]# mysql -uroot -p000000
  3. # 创建三个数据库
  4. MariaDB [(none)]> create database nova_api;
  5. MariaDB [(none)]> create database nova_cell0;
  6. MariaDB [(none)]> create database nova;
  7. MariaDB [(none)]> show databases;
  8. +--------------------+
  9. | Database           |
  10. +--------------------+
  11. | nova               |
  12. | nova_api           |
  13. | nova_cell0         |
  14. # 为数据库授权本地和远程管理权限
  15. MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '000000';
  16. MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '000000';
  17. MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '000000';
  18. MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '000000';
  19. MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '000000';
  20. MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '000000';
复制代码
(3)修改nova配置文件

nova配置文件,/etc/nova/nova.conf。修改这个文件可以实现nova与数据库,keystone和其他组件的连接
api_database:配置与数据库nova_api连接
database:配置与数据库nova连接
api、keystone_authtoken:配置与keystone交互
placement:配置与placement组件交互
glance:配置glacne组件交互
oslo_concurrency:配置锁的路径,为openstack中的代码提供线程及进程锁,lock_path配置这个模块指定的路径
DEFAULT:配置使用消息队列和防火墙等信息
VNC:配置vnc连接模式
配置文件中的$表示取变量值
  1. # 备份配置文件
  2. [root@controller ~]# cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
  3. # 去除配置文件中的注释和空行
  4. [root@controller ~]# grep -Ev '^$|#' /etc/nova/nova.conf.bak > /etc/nova/nova.conf
  5. # 修改配置文件
  6. [root@controller ~]# vi /etc/nova/nova.conf
  7. [DEFAULT]
  8. enable_apis = osapi_compute,metadata
  9. transport_url = rabbit://rabbitmq:000000@controller:5672
  10. my_ip = 192.168.10.10
  11. use_neutron = true
  12. firewall_driver = nova.virt.firewall.NoopFirewallDriver
  13. [api]
  14. auth_strategy = keystone
  15. [api_database]
  16. connection = mysql+pymysql://nova:000000@controller/nova_api
  17. [database]
  18. connection = mysql+pymysql://nova:000000@controller/nova
  19. [glance]
  20. api_servers = http://controller:9292
  21. [keystone_authtoken]
  22. auth_url = http://controller:5000
  23. memcached_servers = controller:11211
  24. auth_type = password
  25. project_domain_name = Default
  26. user_domain_name = Default
  27. project_name = project
  28. username = nova
  29. password = 000000
  30. [oslo_concurrency]
  31. lock_path = /var/lib/nova/tmp
  32. [placement]
  33. auth_url = http://controller:5000
  34. auth_type = password
  35. project_domain_name = Default
  36. user_domain_name = Default
  37. project_name = project
  38. username = placement
  39. password = 000000
  40. region_name = RegionOne
  41. [vnc]
  42. enabled = true
  43. server_listen = $my_ip
  44. server_proxyclient_address = $my_ip
复制代码
(4)初始化数据库

将安装文件中的数据库表信息填入数据库中
  1. # 初始化 nova_api数据库
  2. [root@controller ~]# su nova -s /bin/sh -c "nova-manage api_db sync"
  3. # 创建‘cell1’单元,该单元使用nova数据库
  4. [root@controller ~]# su nova -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1"
  5. # 映射nova 到cell0数据库,使cell0的表结构与nova表结构一致
  6. [root@controller ~]# su nova -s /bin/sh -c "nova-manage cell_v2 map_cell0"
  7. # 初始化nova数据库,因为映射,cell0会同步创建相同数据库(有warning先忽略)
  8. [root@controller ~]# su nova -s /bin/sh -c "nova-manage db sync"
复制代码
(5)验证单元是否都正确注册

存在cell0和cell2个单元则正常
cell0:系统管理
cell1:云主机管理,每增加一个计算计算节点则增加一个和cell1功能相同的单元
  1. [root@controller ~]# nova-manage cell_v2 list_cells
  2. +-------+--------------------------------------+----------------------------------------+-------------------------------------------------+----------+
  3. |  Name |                 UUID                 |             Transport URL              |               Database Connection               | Disabled |
  4. +-------+--------------------------------------+----------------------------------------+-------------------------------------------------+----------+
  5. | cell0 | 00000000-0000-0000-0000-000000000000 |                 none:/                 | mysql+pymysql://nova:****@controller/nova_cell0 |  False   |
  6. | cell1 | 83ad6d17-f245-4310-8729-fccaa033edf2 | rabbit://rabbitmq:****@controller:5672 |    mysql+pymysql://nova:****@controller/nova    |  False   |
  7. +-------+--------------------------------------+----------------------------------------+-------------------------------------------------+----------+ 
复制代码
2、控制节点nova组件初始化及检测

(1)nova组件初始化  
  1. # 导入环境变量模拟登录
  2. [root@controller ~]# source admin-login
  3. # 在default域创建名为nova的用户
  4. [root@controller ~]# openstack user create --domain default --password 000000 nova
  5. +---------------------+----------------------------------+
  6. | Field               | Value                            |
  7. +---------------------+----------------------------------+
  8. | domain_id           | default                          |
  9. | enabled             | True                             |
  10. | id                  | 2f5041ed122d4a50890c34ea02881b47 |
  11. | name                | nova                             |
  12. | options             | {}                               |
  13. | password_expires_at | None                             |
  14. +---------------------+----------------------------------+
  15. # 为nova用户分配admin角色
  16. [root@controller ~]# openstack role add --project project --user nova admin
  17. # 创建compute类型的nova服务
  18. [root@controller ~]# openstack service create --name nova compute
  19. +---------+----------------------------------+
  20. | Field   | Value                            |
  21. +---------+----------------------------------+
  22. | enabled | True                             |
  23. | id      | e7cccf0a4d2549139801ac51bb8546db |
  24. | name    | nova                             |
  25. | type    | compute                          |
  26. +---------+----------------------------------+
  27. # 创建服务端点
  28. [root@controller ~]# openstack endpoint create --region RegionOne nova public http://controller:8774/v2.1
  29. +--------------+----------------------------------+
  30. | Field        | Value                            |
  31. +--------------+----------------------------------+
  32. | enabled      | True                             |
  33. | id           | c60a9641abbb47b391751c9a0b0d6828 |
  34. | interface    | public                           |
  35. | region       | RegionOne                        |
  36. | region_id    | RegionOne                        |
  37. | service_id   | e7cccf0a4d2549139801ac51bb8546db |
  38. | service_name | nova                             |
  39. | service_type | compute                          |
  40. | url          | http://controller:8774/v2.1      |
  41. +--------------+----------------------------------+
  42. [root@controller ~]# openstack endpoint create --region RegionOne nova internal http://controller:8774/v2.1
  43. +--------------+----------------------------------+
  44. | Field        | Value                            |
  45. +--------------+----------------------------------+
  46. | enabled      | True                             |
  47. | id           | 49b042b01ad44784888e65366d61dede |
  48. | interface    | internal                         |
  49. | region       | RegionOne                        |
  50. | region_id    | RegionOne                        |
  51. | service_id   | e7cccf0a4d2549139801ac51bb8546db |
  52. | service_name | nova                             |
  53. | service_type | compute                          |
  54. | url          | http://controller:8774/v2.1      |
  55. +--------------+----------------------------------+
  56. [root@controller ~]# openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
  57. +--------------+----------------------------------+
  58. | Field        | Value                            |
  59. +--------------+----------------------------------+
  60. | enabled      | True                             |
  61. | id           | 6dd22acff2ab4c2195cefee39f371cc0 |
  62. | interface    | admin                            |
  63. | region       | RegionOne                        |
  64. | region_id    | RegionOne                        |
  65. | service_id   | e7cccf0a4d2549139801ac51bb8546db |
  66. | service_name | nova                             |
  67. | service_type | compute                          |
  68. | url          | http://controller:8774/v2.1      |
  69. +--------------+----------------------------------+
  70. [root@controller ~]# openstack endpoint list | grep nova
  71. | 49b042b01ad44784888e65366d61dede | RegionOne | nova         | compute      | True    | internal  | http://controller:8774/v2.1 |
  72. | 6dd22acff2ab4c2195cefee39f371cc0 | RegionOne | nova         | compute      | True    | admin     | http://controller:8774/v2.1 |
  73. | c60a9641abbb47b391751c9a0b0d6828 | RegionOne | nova         | compute      | True    | public    | http://controller:8774/v2.1 |
  74. # 开机启动控制节点的nova服务
  75. [root@controller ~]# systemctl enable openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
  76. Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-api.service to /usr/lib/systemd/system/openstack-nova-api.service.
  77. Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-scheduler.service to /usr/lib/systemd/system/openstack-nova-scheduler.service.
  78. Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-conductor.service to /usr/lib/systemd/system/openstack-nova-conductor.service.
  79. Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-novncproxy.service to /usr/lib/systemd/system/openstack-nova-novncproxy.service.
  80. # 启动nova服务
  81. [root@controller ~]# systemctl start openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
复制代码
(2)检测控制节点nova服务

nova服务会占用8874和9775端口,查看端口是否启动,可判断nova服务是否已经运行了
nova-conductor和nova-scheduler2个服务在控制节点的模块均处于up状态,则服务正常
  1. # 方法一:查看端口占用
  2. [root@controller ~]# netstat -nutpl | grep 877
  3. tcp        0      0 0.0.0.0:8774            0.0.0.0:*               LISTEN      2487/python2        
  4. tcp        0      0 0.0.0.0:8775            0.0.0.0:*               LISTEN      2487/python2        
  5. tcp6       0      0 :::8778                 :::*                    LISTEN      1030/httpd
  6. # 方法二:查看计算服务列表
  7. [root@controller ~]# openstack compute service list
  8. +----+----------------+------------+----------+---------+-------+----------------------------+
  9. | ID | Binary         | Host       | Zone     | Status  | State | Updated At                 |
  10. +----+----------------+------------+----------+---------+-------+----------------------------+
  11. |  1 | nova-conductor | controller | internal | enabled | up    | 2022-10-28T10:53:26.000000 |
  12. |  4 | nova-scheduler | controller | internal | enabled | up    | 2022-10-28T10:53:28.000000 |
  13. +----+----------------+------------+----------+---------+-------+----------------------------+
复制代码
3、安装配置计算节点nova服务  

nova需要再计算节点安装nova-compute计算模块,所有的云主机均为该模块在计算节点生成
(1)安装nova软件包
  1. # 把阿里云的源下载过来
  2. [root@compute yum.repos.d]# scp root@192.168.10.10:/etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/
  3. root@192.168.10.10's password:
  4. CentOS-Base.repo                                                        100% 2523     1.1MB/s   00:00   
  5. [root@compute yum.repos.d]# ls
  6. CentOS-Base.repo  OpenStack.repo  repo.bak
  7. # 安装nova的计算模块
  8. [root@compute yum.repos.d]# yum install -y openstack-nova-compute
  9. # 查看用户信息
  10. [root@compute ~]# cat /etc/passwd | grep nova
  11. nova:x:162:162:OpenStack Nova Daemons:/var/lib/nova:/sbin/nologin
  12. # 查看用户组信息
  13. [root@compute ~]# cat /etc/group | grep nova
  14. nobody:x:99:nova
  15. qemu:x:107:nova
  16. libvirt:x:987:nova
  17. nova:x:162:nova
复制代码
(2)修改nova配置文件

nova的配置文件/etc/nova/nova.conf,修改他实现nova与数据库,keystone和其他组件的连接  
与控制节点的主要区别:
my_ip = 192.168.109.10
libvirt中多了配置:virt_type = qemu
  1. # 备份配置文件
  2. [root@compute ~]# cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
  3. # 去掉配置文件注释和空行
  4. [root@compute ~]# grep -Ev '^$|#' /etc/nova/nova.conf.bak > /etc/nova/nova.conf
  5. # 编辑配置文件
  6. [root@compute ~]# vi /etc/nova/nova.conf
  7. [DEFAULT]
  8. enable_apis = osapi_compute,metadata
  9. transport_url = rabbit://rabbitmq:000000@controller:5672
  10. my_ip = 192.168.10.20
  11. use_neutron = true
  12. firewall_driver = nova.virt.firewall.NoopFirewallDriver
  13. [api]
  14. auth_strategy = keystone
  15. [glance]
  16. api_servers = http://controller:9292
  17. [keystone_authtoken]
  18. auth_url = http://controller:5000
  19. memcached_servers = controller:11211
  20. auth_type = password
  21. project_domain_name = Default
  22. user_domain_name = Default
  23. project_name = project
  24. username = nova
  25. password = 000000
  26. [libvirt]
  27. virt_type = qemu
  28. [oslo_concurrency]
  29. lock_path = /var/lib/nova/tmp
  30. [placement]
  31. auth_url = http://controller:5000
  32. auth_type = password
  33. project_domain_name = Default
  34. user_domain_name = Default
  35. project_name = project
  36. username = placement
  37. password = 000000
  38. region_name = RegionOne
  39. [vnc]
  40. enabled = true
  41. server_listen = 0.0.0.0
  42. server_proxyclient_address = $my_ip
  43. novncproxy_base_url = http://192.168.10.10:6080/vnc_auto.html
复制代码
(3)启动计算节点nova服务
  1. # 开机启动
  2. [root@compute ~]# systemctl enable libvirtd openstack-nova-compute
  3. Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-compute.service to /usr/lib/systemd/system/openstack-nova-compute.service.
  4. # 启动
  5. [root@compute ~]# systemctl start libvirtd openstack-nova-compute
  6. # 在控制节点查看服务状态
  7. [root@controller ~]# openstack compute service list
  8. +----+----------------+------------+----------+---------+-------+----------------------------+
  9. | ID | Binary         | Host       | Zone     | Status  | State | Updated At                 |
  10. +----+----------------+------------+----------+---------+-------+----------------------------+
  11. |  1 | nova-conductor | controller | internal | enabled | up    | 2022-10-28T11:19:57.000000 |
  12. |  4 | nova-scheduler | controller | internal | enabled | up    | 2022-10-28T11:19:49.000000 |
  13. |  6 | nova-compute   | compute    | nova     | enabled | up    | 2022-10-28T11:19:56.000000 |
  14. +----+----------------+------------+----------+---------+-------+----------------------------+
复制代码
4、发现计算节点并检验服务

每个计算节点要加入系统,都需要在控制节点上执行一次发现计算节点的操作,被发现的计算节点才能被映射为一个单元
(1)发现计算节点

注意是控制节点操作
  1. # 模拟登录验证
  2. [root@controller ~]# source admin-login
  3. # 切换nova用户执行发现未注册计算节点
  4. # 发现计算节点后,将自动与cell1单元形成关联,后面可通过cell1对计算节点管理
  5. [root@controller ~]# su nova -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose"
  6. Found 2 cell mappings.
  7. Getting computes from cell 'cell1': 83ad6d17-f245-4310-8729-fccaa033edf2
  8. Checking host mapping for compute host 'compute': 13af5106-c1c1-4b3f-93f5-cd25e030f39d
  9. Creating host mapping for compute host 'compute': 13af5106-c1c1-4b3f-93f5-cd25e030f39d
  10. Found 1 unmapped computes in cell: 83ad6d17-f245-4310-8729-fccaa033edf2
  11. Skipping cell0 since it does not contain hosts.
  12. # 设置自动发现
  13. # 1.每隔60秒执行一次发现命令
  14. [root@controller ~]# vi /etc/nova/nova.conf
  15. [scheduler]
  16. discover_hosts_in_cells_interval = 60
  17. # 2.重启nova-api服务,让配置生效
  18. [root@controller ~]# systemctl restart openstack-nova-api
复制代码
(2)验证nova服务

均在控制节点上操作  
  1. # 方法一:查看计算服务列表
  2. [root@controller ~]# openstack compute service list
  3. +----+----------------+------------+----------+---------+-------+----------------------------+
  4. | ID | Binary         | Host       | Zone     | Status  | State | Updated At                 |
  5. +----+----------------+------------+----------+---------+-------+----------------------------+
  6. |  1 | nova-conductor | controller | internal | enabled | up    | 2022-10-28T12:02:46.000000 |
  7. |  4 | nova-scheduler | controller | internal | enabled | up    | 2022-10-28T12:02:38.000000 |
  8. |  6 | nova-compute   | compute    | nova     | enabled | up    | 2022-10-28T12:02:40.000000 |
  9. +----+----------------+------------+----------+---------+-------+----------------------------+
  10. # 方法二:查看Openstack服务及端点列表
  11. [root@controller ~]# openstack catalog list
  12. +-----------+-----------+-----------------------------------------+
  13. | Name      | Type      | Endpoints                               |
  14. +-----------+-----------+-----------------------------------------+
  15. | glance    | image     | RegionOne                               |
  16. |           |           |   internal: http://controller:9292      |
  17. |           |           | RegionOne                               |
  18. |           |           |   admin: http://controller:9292         |
  19. |           |           | RegionOne                               |
  20. |           |           |   public: http://controller:9292        |
  21. |           |           |                                         |
  22. | keystone  | identity  | RegionOne                               |
  23. |           |           |   admin: http://controller:5000/v3      |
  24. |           |           | RegionOne                               |
  25. |           |           |   internal: http://controller:5000/v3   |
  26. |           |           | RegionOne                               |
  27. |           |           |   public: http://controller:5000/v3     |
  28. |           |           |                                         |
  29. | placement | placement | RegionOne                               |
  30. |           |           |   internal: http://controller:8778      |
  31. |           |           | RegionOne                               |
  32. |           |           |   public: http://controller:8778        |
  33. |           |           | RegionOne                               |
  34. |           |           |   admin: http://controller:8778         |
  35. |           |           |                                         |
  36. | nova      | compute   | RegionOne                               |
  37. |           |           |   internal: http://controller:8774/v2.1 |
  38. |           |           | RegionOne                               |
  39. |           |           |   admin: http://controller:8774/v2.1    |
  40. |           |           | RegionOne                               |
  41. |           |           |   public: http://controller:8774/v2.1   |
  42. |           |           |                                         |
  43. +-----------+-----------+-----------------------------------------+
  44. # 方法三:使用Nova状态检测工具进行检查
  45. [root@controller ~]# nova-status upgrade check
  46. +--------------------------------+
  47. | Upgrade Check Results          |
  48. +--------------------------------+
  49. | Check: Cells v2                |
  50. | Result: Success                |
  51. | Details: None                  |
  52. +--------------------------------+
  53. | Check: Placement API           |
  54. | Result: Success                |
  55. | Details: None                  |
  56. +--------------------------------+
  57. | Check: Ironic Flavor Migration |
  58. | Result: Success                |
  59. | Details: None                  |
  60. +--------------------------------+
  61. | Check: Cinder API              |
  62. | Result: Success                |
  63. | Details: None                  |
  64. +--------------------------------+
复制代码
5、安装并完成情况检测  
  1. # 1.检查控制节点nova用户和用户组
  2. [root@controller ~]# cat /etc/passwd | grep nova
  3. nova:x:162:162:OpenStack Nova Daemons:/var/lib/nova:/sbin/nologin
  4. [root@controller ~]# cat /etc/group | grep nova
  5. nobody:x:99:nova
  6. nova:x:162:nova
  7. # 2.检查计算节点nova用户和用户组
  8. [root@compute ~]# cat /etc/passwd | grep nova
  9. nova:x:162:162:OpenStack Nova Daemons:/var/lib/nova:/sbin/nologin
  10. [root@compute ~]# cat /etc/group | grep nova
  11. nobody:x:99:nova
  12. qemu:x:107:nova
  13. libvirt:x:987:nova
  14. nova:x:162:nova
  15. # 3.查看控制节点数据库
  16. MariaDB [(none)]> show databases;
  17. +--------------------+
  18. | Database           |
  19. +--------------------+
  20. | glance             |
  21. | information_schema |
  22. | keystone           |
  23. | mysql              |
  24. | nova               |
  25. | nova_api           |
  26. | nova_cell0         |
  27. # 4.查看nova用户对数据库的权限
  28. MariaDB [(none)]> show grants for nova@'%';
  29. +-----------------------------------------------------------------------------------------------------+
  30. | Grants for nova@%                                                                                   |
  31. +-----------------------------------------------------------------------------------------------------+
  32. | GRANT USAGE ON *.* TO 'nova'@'%' IDENTIFIED BY PASSWORD '*032197AE5731D4664921A6CCAC7CFCE6A0698693' |
  33. | GRANT ALL PRIVILEGES ON `nova`.* TO 'nova'@'%'                                                      |
  34. | GRANT ALL PRIVILEGES ON `nova_api`.* TO 'nova'@'%'                                                  |
  35. | GRANT ALL PRIVILEGES ON `nova_cell0`.* TO 'nova'@'%'                                                |
  36. +-----------------------------------------------------------------------------------------------------+
  37. 4 rows in set (0.000 sec)
  38. MariaDB [(none)]> show grants for nova@'localhost';
  39. +-------------------------------------------------------------------------------------------------------------+
  40. | Grants for nova@localhost                                                                                   |
  41. +-------------------------------------------------------------------------------------------------------------+
  42. | GRANT USAGE ON *.* TO 'nova'@'localhost' IDENTIFIED BY PASSWORD '*032197AE5731D4664921A6CCAC7CFCE6A0698693' |
  43. | GRANT ALL PRIVILEGES ON `nova`.* TO 'nova'@'localhost'                                                      |
  44. | GRANT ALL PRIVILEGES ON `nova_cell0`.* TO 'nova'@'localhost'                                                |
  45. | GRANT ALL PRIVILEGES ON `nova_api`.* TO 'nova'@'localhost'  
  46. # 5.nova\nova_api\nova_cell0数据库表同步
  47. MariaDB [(none)]> use nova
  48. Database changed
  49. MariaDB [nova]> show tables;
  50. +--------------------------------------------+
  51. | Tables_in_nova                             |
  52. +--------------------------------------------+
  53. | agent_builds                               |
  54. | aggregate_hosts                            |
  55. | aggregate_metadata                         |
  56. # 6.检查nova用户是否存在
  57. [root@controller ~]# openstack user list
  58. +----------------------------------+-----------+
  59. | ID                               | Name      |
  60. +----------------------------------+-----------+
  61. | f4f16d960e0643d7b5a35db152c87dae | admin     |
  62. | 81238b556a444c8f80cb3d7dc72a24d3 | glance    |
  63. | e0d6a46f9b1744d8a7ab0332ab45d59c | placement |
  64. | 2f5041ed122d4a50890c34ea02881b47 | nova      |
  65. # 7.检查nova用户是否有admin权限
  66. [root@controller ~]# openstack role list
  67. +----------------------------------+--------+
  68. | ID                               | Name   |
  69. +----------------------------------+--------+
  70. | 47670bbd6cc1472ab42db560637c7ebe | reader |
  71. | 5eee0910aeb844a1b82f48100da7adc9 | admin  |
  72. | 700ec993d3cf456fa591c03e72f37856 | user   |
  73. | bc2c8147bbd643629a020a6bd9591eca | member |
  74. +----------------------------------+--------+
  75. [root@controller ~]# openstack role assignment list
  76. +----------------------------------+----------------------------------+-------+----------------------------------+--------+--------+-----------+
  77. | Role                             | User                             | Group | Project                          | Domain | System | Inherited |
  78. +----------------------------------+----------------------------------+-------+----------------------------------+--------+--------+-----------+
  79. | 5eee0910aeb844a1b82f48100da7adc9 | 2f5041ed122d4a50890c34ea02881b47 |       | e3a549077f354998aa1a75677cfde62e |        |        | False     |
  80. # 8.检查是否创建看了服务实体nova
  81. [root@controller ~]# openstack service list
  82. +----------------------------------+-----------+-----------+
  83. | ID                               | Name      | Type      |
  84. +----------------------------------+-----------+-----------+
  85. | 324a07034ea4453692570e3edf73cf2c | glance    | image     |
  86. | 5d25b4ed1443497599707e043866eaae | keystone  | identity  |
  87. | da038496edf04ce29d7d3d6b8e647755 | placement | placement |
  88. | e7cccf0a4d2549139801ac51bb8546db | nova      | compute   |
  89. # 9.检查nova服务端点
  90. [root@controller ~]# openstack endpoint list | grep nova
  91. | 49b042b01ad44784888e65366d61dede | RegionOne | nova         | compute      | True    | internal  | http://controller:8774/v2.1 |
  92. | 6dd22acff2ab4c2195cefee39f371cc0 | RegionOne | nova         | compute      | True    | admin     | http://controller:8774/v2.1 |
  93. | c60a9641abbb47b391751c9a0b0d6828 | RegionOne | nova         | compute      | True    | public    | http://controller:8774/v2.1 |
  94. # 10.nova服务是否正常运行
  95. [root@controller ~]# nova-status upgrade check
  96. +--------------------------------+
  97. | Upgrade Check Results          |
  98. +--------------------------------+
  99. | Check: Cells v2                |
  100. | Result: Success                |
  101. | Details: None                  |
  102. +--------------------------------+
  103. | Check: Placement API           |
  104. | Result: Success                |
  105. | Details: None                  |
  106. +--------------------------------+
  107. | Check: Ironic Flavor Migration |
  108. | Result: Success                |
  109. | Details: None                  |
  110. +--------------------------------+
  111. | Check: Cinder API              |
  112. | Result: Success                |
  113. | Details: None                  |
  114. +--------------------------------+
复制代码
  
五:网络服务(Neutron)部署

neutron负责虚拟网络设备的创建,管理,包含网桥,网络,端口等
1、网络初始环境准备

(1)设置外网网卡为混杂模式

需要将网卡设置为混杂模式,网卡能将通过自己的接口的所有数据都捕获,为了实现虚拟网络的数据转发,neutron需要将外网网卡设置为混杂模式
 
  1. # 设置控制节点
  2. [root@controller ~]# ifconfig ens34 promisc
  3. [root@controller ~]# ifconfig
  4. ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
  5.         inet 192.168.10.10  netmask 255.255.255.0  broadcast 192.168.10.255
  6.                 略...
  7. ens34: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1500    《————这里增加了PROMISC
  8. # 设置计算节点
  9. [root@compute ~]# ifconfig ens34 promisc
  10. [root@compute ~]# ifconfig
  11. ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
  12.         inet 192.168.10.20  netmask 255.255.255.0  broadcast 192.168.10.255
  13.                 略...
  14. ens34: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1500
复制代码
 
网卡信息中出现了PROMISC字样,则表示陈工设置为混杂模式,凡是通过该网卡的数据均可被该网卡接收,
在设置开机后混杂模式自动生效
  1. # 控制节点执行
  2. [root@controller ~]# echo 'ifconfig ens34 promisc' >> /etc/profile
  3. [root@controller ~]# tail -1 /etc/profile
  4. ifconfig ens34 promisc
  5. # 计算节点执行
  6. [root@compute ~]# echo 'ifconfig ens34 promisc' >> /etc/profile
  7. [root@compute ~]# tail -1 /etc/profile
  8. ifconfig ens34 promisc
复制代码
(2)加载桥接模式防火墙模块  

 网络过滤器时linux内核中的一个软件框架,用于管理网络数据包,能网络地址转换,还能修改数据包,数据包过滤等 
 
  1. # 1.修改系统参数配置文件
  2. # 控制节点修改
  3. [root@controller ~]# echo 'net.bridge.bridge-nf-call-iptables = 1
  4. net.bridge.bridge-nf-call-ip6tables = 1' >> /etc/sysctl.conf
  5. [root@controller ~]# tail -n 2 /etc/sysctl.conf
  6. net.bridge.bridge-nf-call-iptables = 1
  7. net.bridge.bridge-nf-call-ip6tables = 1
  8. # 计算节点修改
  9. [root@compute ~]#  echo 'net.bridge.bridge-nf-call-iptables = 1
  10. > net.bridge.bridge-nf-call-ip6tables = 1' >> /etc/sysctl.conf
  11. [root@compute ~]#  tail -n 2 /etc/sysctl.conf
  12. net.bridge.bridge-nf-call-iptables = 1
  13. net.bridge.bridge-nf-call-ip6tables = 1
  14. # 2.分别加载br_netfilter模块
  15. [root@controller ~]# modprobe br_netfilter
  16. [root@compute ~]# modprobe br_netfilter
  17. # 3.分别检查模块加载
  18. [root@controller ~]# sysctl -p
  19. net.bridge.bridge-nf-call-iptables = 1
  20. net.bridge.bridge-nf-call-ip6tables = 1
  21. [root@compute ~]# sysctl -p
  22. net.bridge.bridge-nf-call-iptables = 1
  23. net.bridge.bridge-nf-call-ip6tables = 1
复制代码
2、控制节点neutron服务安装配置 

(1)安装neutron软件包

openstack-neutron:neuron-server的包
openstack-neutron-ml2:ml2插件的包
openstack-neutron-linuxbridge:网桥和网络提供者相关的包
  1. # 安装相关软件包
  2. # 阿里云上有包dnsmasq-utils-2.76-17.el7_9.3.x86_64.rpm缺失
  3. [root@controller ~]# yum install -y wget
  4. [root@controller ~]# wget http://mirror.centos.org/centos/7/updates/x86_64/Packages/dnsmasq-utils-2.76-17.el7_9.3.x86_64.rpm
  5. [root@controller ~]# ls
  6. admin-login      cirros-0.5.1-x86_64-disk.img    dnsmasq-utils-2.76-17.el7_9.3.x86_64.rpm
  7. [root@controller ~]#  rpm -ivh dnsmasq-utils-2.76-17.el7_9.3.x86_64.rpm
  8. Preparing...                          ################################# [100%]
  9. Updating / installing...
  10.    1:dnsmasq-utils-2.76-17.el7_9.3    ################################# [100%]
  11. [root@controller ~]# yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge
  12. # 检查用户信息
  13. [root@controller ~]# cat /etc/passwd | grep neutron
  14. neutron:x:990:987:OpenStack Neutron Daemons:/var/lib/neutron:/sbin/nologin
  15. # 检查用户组信息
  16. [root@controller ~]# cat /etc/group | grep neutron
  17. neutron:x:987:
复制代码
(2)创建neutron数据库并授权  
  1. # 1.登录并创建数据库
  2. [root@controller ~]# mysql -uroot -p000000
  3. MariaDB [(none)]> create database neutron;
  4. Query OK, 1 row affected (0.000 sec)
  5. MariaDB [(none)]> show databases;
  6. +--------------------+
  7. | Database           |
  8. +--------------------+
  9. | glance             |
  10. | information_schema |
  11. | keystone           |
  12. | mysql              |
  13. | neutron            |
  14. # 2.为数据库授权本地和远程管理权限
  15. MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '000000';
  16. Query OK, 0 rows affected (0.001 sec)
  17. MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '000000';
  18. Query OK, 0 rows affected (0.000 sec)
复制代码
(3)修改neutron服务相关的配置文件  

 1.配置neutron组件信息
修改default与keystone_autjoken部分,实现与keystone交互
修改database部分,实现与数据库连接
修改default部分,实现与消息队列交互及核心插件等
修改oslo_concurrency,配置锁路径
  1. # 备份配置文件
  2. [root@controller ~]# cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak
  3. # 去掉配置文件注释和空行
  4. [root@controller ~]# grep -Ev '^$|#' /etc/neutron/neutron.conf.bak > /etc/neutron/neutron.conf
  5. # 编辑配置文件
  6. [root@controller ~]# vi /etc/neutron/neutron.conf
  7. [DEFAULT]
  8. core_plugin = ml2
  9. service_plugins = router
  10. transport_url = rabbit://rabbitmq:000000@controller
  11. auth_strategy = keystone
  12. notify_nova_on_port_status_changes = true
  13. notify_nova_on_port_data_changes = true
  14. [database]
  15. connection = mysql+pymysql://neutron:000000@controller/neutron
  16. [keystone_authtoken]
  17. auth_url = http://controller:5000
  18. memcached_servers = controller:11211
  19. auth_type = password
  20. project_domain_name = Default
  21. user_domain_name = Default
  22. project_name = project
  23. username = neutron
  24. password = 000000
  25. [oslo_concurrency]
  26. lock_path = /var/lib/nova/tmp
  27. [nova]
  28. auth_url = http://controller:5000
  29. auth_type = password
  30. project_domain_name = default
  31. user_domain_name = default
  32. project_name = project
  33. username = nova
  34. password = 000000
  35. region_name = RegionOne
  36. server_proxyclient_address = 192.168.10.10
复制代码
2、修改二层模块插件(ml2plugin)的配置文件
是neutron的核心插件
  1. # 备份配置文件
  2. [root@controller ~]# cp /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugins/ml2/ml2_conf.ini.bak
  3. # 去除配置文件中的注释和空行
  4. [root@controller ~]# grep -Ev '^$|#' /etc/neutron/plugins/ml2/ml2_conf.ini.bak > /etc/neutron/plugins/ml2/ml2_conf.ini
  5. # 编辑配置文件
  6. [root@controller ~]# vi /etc/neutron/plugins/ml2/ml2_conf.ini
  7. [ml2]
  8. type_drivers = flat,local,vlan,gre,vxlan,geneve
  9. tenant_network_types = local,flat
  10. mechanism_drivers = linuxbridge
  11. extension_drivers = port_security
  12. [ml2_type_flat]
  13. flat_networks = provider
  14. [securitygroup]
  15. enable_ipset = true
  16. # 设置映射启用ML2插件
  17. [root@controller ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
  18. [root@controller ~]# ll /etc/neutron/
  19. lrwxrwxrwx  1 root root       37 Nov  4 20:01 plugin.ini -> /etc/neutron/plugins/ml2/ml2_conf.ini
复制代码
3、修改网桥代理配置文件
要在ml2的配置文件中设置机制驱动mechanism_drivers的值为linuxbridge
  1. # 1.备份配置文件
  2. [root@controller ~]# cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak
  3. # 2.删除注释和空行
  4. [root@controller ~]# grep -Ev '^$|#' /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak > /etc/neutron/plugins/ml2/linuxbridge_agent.ini
  5. [root@controller ~]# cat /etc/neutron/plugins/ml2/linuxbridge_agent.ini
  6. [DEFAULT]
  7. # 3.编辑配置文件
  8. [root@controller ~]# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
  9. [DEFAULT]
  10. [linux_bridge]
  11. physical_interface_mappings = provider:ens34
  12. [vxlan]
  13. enable_vxlan = false
  14. [securitygroup]
  15. enable_security_group = true
  16. firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
复制代码
4、修改dhcp代理配置文件
dhcp-agent为云主机提供了自动分配ip地址的服务
  1. # 1.备份和去除空行和注释配置文件
  2. [root@controller ~]# cp /etc/neutron/dhcp_agent.ini /etc/neutron/dhcp_agent.ini.bak
  3. [root@controller ~]# grep -Ev '^$|#' /etc/neutron/dhcp_agent.ini.bak > /etc/neutron/dhcp_agent.ini
  4. [root@controller ~]# cat /etc/neutron/dhcp_agent.ini
  5. [DEFAULT]
  6. # 2.编辑配置文件
  7. [root@controller ~]# vi /etc/neutron/dhcp_agent.ini
  8. [DEFAULT]
  9. interface_driver = linuxbridge
  10. dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
  11. enable_isolated_metadata = true
复制代码
5、修改元数据代理配置文件
云主机在计算节点,运行过程中需要和控制节点nova-api模块交互,交互需要使用neutron-metadata-agent
  1. # 1.备份和去除空行注释配置文件
  2. [root@controller ~]# cp /etc/neutron/metadata_agent.ini /etc/neutron/metadata_agent.ini.bak
  3. [root@controller ~]# grep -Ev '^$|#' /etc/neutron/metadata_agent.ini.bak  > /etc/neutron/metadata_agent.ini
  4. [root@controller ~]# cat /etc/neutron/metadata_agent.ini
  5. [DEFAULT]
  6. [cache]
  7. # 2.编辑配置文件
  8. [root@controller ~]# vi /etc/neutron/metadata_agent.ini
  9. [DEFAULT]
  10. nova_metadata_host = controller
  11. metadata_proxy_shared_secret = METADATA_SECRET
  12. [cache]
复制代码
6、修改Nova配置文件
nova处于云平台的核心位置,需要在nova配置文件中指明如何与neutron进行交互
  1. # 注意文件目录
  2. [root@controller ~]# echo '
  3. [neutron]
  4. auth_url = http://controller:5000
  5. auth_type = password
  6. project_domain_name = Default
  7. user_domain_name = Default
  8. region_name = RegionOne
  9. project_name = project
  10. username = neutron
  11. password = 000000
  12. service_metadata_proxy = true
  13. metadata_proxy_shared_secret = METADATA_SECRET
  14. ' >> /etc/nova/nova.conf
复制代码
(4)初始化数据库

neutron数据库同步,将安装文件中的数据库的表信息填充到数据库中  
  1. # 数据库同步
  2. [root@controller neutron]# su neutron -s /bin/sh -c "neutron-db-manage \
  3. --config-file /etc/neutron/neutron.conf \
  4. --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head"
  5. # 数据库验证
  6. [root@controller neutron]# mysql -uroot -p000000
  7. MariaDB [(none)]> use neutron;
  8. Database changed
  9. MariaDB [neutron]> show tables;
  10. +-----------------------------------------+
  11. | Tables_in_neutron                       |
  12. +-----------------------------------------+
  13. | address_scopes                          |
  14. | agents                                  |
  15. | alembic_version                         |
  16. | allowedaddresspairs                     |
  17. | arista_provisioned_nets                 |
  18. | arista_provisioned_tenants              |
复制代码
3、neutron组件初始化

任务均在控制节点完成
(1)创建neutron用户并分配角色
  1. # 模拟登录
  2. [root@controller ~]# source admin-login
  3. # 在 default 域创建neutron用户
  4. [root@controller ~]# openstack user create --domain default --password 000000 neutron
  5. +---------------------+----------------------------------+
  6. | Field               | Value                            |
  7. +---------------------+----------------------------------+
  8. | domain_id           | default                          |
  9. | enabled             | True                             |
  10. | id                  | 67bd1f9c48174e3e96bb41e0f76687ca |
  11. | name                | neutron                          |
  12. | options             | {}                               |
  13. | password_expires_at | None                             |
  14. +---------------------+----------------------------------+
  15. # 给neutron用户分配admin角色
  16. [root@controller ~]# openstack role add --project project --user neutron admin
  17. # 验证
  18. [root@controller ~]# openstack role assignment list
  19. +----------------------------------+----------------------------------+-------+----------------------------------+--------+--------+-----------+
  20. | Role                             | User                             | Group | Project                          | Domain | System | Inherited |
  21. +----------------------------------+----------------------------------+-------+----------------------------------+--------+--------+-----------+
  22. | 5eee0910aeb844a1b82f48100da7adc9 | 2f5041ed122d4a50890c34ea02881b47 |       | e3a549077f354998aa1a75677cfde62e |        |        | False     |
  23. | 5eee0910aeb844a1b82f48100da7adc9 | 67bd1f9c48174e3e96bb41e0f76687ca |       | e3a549077f354998aa1a75677cfde62e |        |        | False     |
复制代码
(2)创建neutron服务及服务端点
  1. # 创建network类型neutron服务
  2. [root@controller ~]# openstack service create --name neutron network
  3. +---------+----------------------------------+
  4. | Field   | Value                            |
  5. +---------+----------------------------------+
  6. | enabled | True                             |
  7. | id      | 459c365a11c74e5894b718b5406022a8 |
  8. | name    | neutron                          |
  9. | type    | network                          |
  10. +---------+----------------------------------+
  11. # 创建3个服务端点
  12. [root@controller ~]# openstack endpoint create --region RegionOne neutron public http://controller:9696
  13. +--------------+----------------------------------+
  14. | Field        | Value                            |
  15. +--------------+----------------------------------+
  16. | enabled      | True                             |
  17. | id           | 1d59d497c89c4fa9b8789d685fab9fe5 |
  18. | interface    | public                           |
  19. | region       | RegionOne                        |
  20. | region_id    | RegionOne                        |
  21. | service_id   | 459c365a11c74e5894b718b5406022a8 |
  22. | service_name | neutron                          |
  23. | service_type | network                          |
  24. | url          | http://controller:9696           |
  25. +--------------+----------------------------------+
  26. [root@controller ~]# openstack endpoint create --region RegionOne neutron internal http://controller:9696
  27. +--------------+----------------------------------+
  28. | Field        | Value                            |
  29. +--------------+----------------------------------+
  30. | enabled      | True                             |
  31. | id           | 44de22606819441aa845b370a9304bf5 |
  32. | interface    | internal                         |
  33. | region       | RegionOne                        |
  34. | region_id    | RegionOne                        |
  35. | service_id   | 459c365a11c74e5894b718b5406022a8 |
  36. | service_name | neutron                          |
  37. | service_type | network                          |
  38. | url          | http://controller:9696           |
  39. +--------------+----------------------------------+
  40. [root@controller ~]# openstack endpoint create --region RegionOne neutron admin http://controller:9696
  41. +--------------+----------------------------------+
  42. | Field        | Value                            |
  43. +--------------+----------------------------------+
  44. | enabled      | True                             |
  45. | id           | 75e7eaf8bc664a2c901b7ad58141bedc |
  46. | interface    | admin                            |
  47. | region       | RegionOne                        |
  48. | region_id    | RegionOne                        |
  49. | service_id   | 459c365a11c74e5894b718b5406022a8 |
  50. | service_name | neutron                          |
  51. | service_type | network                          |
  52. | url          | http://controller:9696           |
  53. +--------------+----------------------------------+
复制代码
(3)启动控制节点上的neutron服务

由于修改了nova的配置文件,启动neutron服务前,需要重启nova服务
  1. # 重启nova服务
  2. [root@controller ~]# systemctl restart openstack-nova-api
  3. # 服务开机启动
  4. [root@controller ~]# systemctl enable neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent
  5. Created symlink from /etc/systemd/system/multi-user.target.wants/neutron-server.service to /usr/lib/systemd/system/neutron-server.service.
  6. Created symlink from /etc/systemd/system/multi-user.target.wants/neutron-linuxbridge-agent.service to /usr/lib/systemd/system/neutron-linuxbridge-agent.service.
  7. Created symlink from /etc/systemd/system/multi-user.target.wants/neutron-dhcp-agent.service to /usr/lib/systemd/system/neutron-dhcp-agent.service.
  8. Created symlink from /etc/systemd/system/multi-user.target.wants/neutron-metadata-agent.service to /usr/lib/systemd/system/neutron-metadata-agent.service.
  9. [root@controller neutron]# systemctl start neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent
复制代码
4、检测控制节点上的neutron服务
  1. # 方法一:查看端口占用情况
  2. [root@controller neutron]# netstat -tnlup|grep 9696
  3. tcp        0      0 0.0.0.0:9696            0.0.0.0:*               LISTEN      4652/server.log
  4. # 方法二:检验服务端点
  5. [root@controller neutron]# curl http://controller:9696
  6. {"versions": [{"status": "CURRENT", "id": "v2.0", "links": [{"href": "http://controller:9696/v2.0/", "rel": "self"}]}]}
  7. # 方法三:查看服务运行状态
  8. # Loaded:值为enabled,表示服务以及设置了开机启动
  9. # Active:值为active(running),表示服务当前处于运行状态
  10. [root@controller neutron]# systemctl status neutron-server
  11. ● neutron-server.service - OpenStack Neutron Server
  12.    Loaded: loaded (/usr/lib/systemd/system/neutron-server.service; enabled; vendor preset: disabled)
  13.    Active: active (running) since Fri 2022-11-11 16:31:20 CST; 5min ago
  14. Main PID: 4652 (/usr/bin/python)
复制代码
5、安装和配置计算节点的neutron服务

均在计算节点上完成 
(1)安装neutron软件包
  1. # 计算节点安装软件包,包含网桥和网络提供者的相关软件
  2. [root@compute ~]# yum install -y openstack-neutron-linuxbridge
  3. # 查看neutron用户和用户组
  4. [root@compute ~]# cat /etc/passwd | grep neutron
  5. neutron:x:989:986:OpenStack Neutron Daemons:/var/lib/neutron:/sbin/nologin
  6. [root@compute ~]# cat /etc/group | grep neutron
  7. neutron:x:986:
复制代码
(2)修改neutron配置文件

要对neutron组件,网桥代理,Nova组件进行配置
1.neutron配置文件
  1. # 备份配置文件
  2. [root@compute ~]# cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak
  3. # 去除空行和注释
  4. [root@compute ~]# grep -Ev '^$|#' /etc/neutron/neutron.conf.bak > /etc/neutron/neutron.conf
  5. [root@compute ~]# cat /etc/neutron/neutron.conf
  6. [DEFAULT]
  7. [cors]
  8. [database]
  9. [keystone_authtoken]
  10. # 修改Neutron配置文件
  11. [root@compute ~]# vi /etc/neutron/neutron.conf
  12. [DEFAULT]
  13. transport_url = rabbit://rabbitmq:000000@controller:5672
  14. auth_strategy = keystone
  15. [keystone_authtoken]
  16. auth_url = http://controller:5000
  17. memcached_servers = controller:11211
  18. auth_type = password
  19. project_domain_name = default
  20. user_domain_name = default
  21. project_name = project
  22. username = neutron
  23. password = 000000
  24. [oslo_concurrency]
  25. lock_path = /var/lib/neutron/tmp
复制代码
2.网桥代理配置文件
  1. # 网桥代理的配置文件备份和去空行和注释
  2. [root@compute ~]# cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak
  3. [root@compute ~]# grep -Ev '^$|#' /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak > /etc/neutron/plugins/ml2/linuxbridge_agent.ini
  4. # 修改网桥代理的配置文件
  5. [root@compute ~]# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
  6. [DEFAULT]
  7. [linux_bridge]
  8. physical_interface_mappings = provider:ens34
  9. [vxlan]
  10. enable_vxlan = false
  11. [securitygroup]
  12. enable_security_group = true
  13. firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
复制代码
3.nova配置文件
  1. # 在Nova配置文件中,需要在[DEFAULT]部分加入两行内容。在[neutron]部分加入内容
  2. [root@compute ~]# vi /etc/nova/nova.conf
  3. [DEFAULT]
  4. enable_apis = osapi_compute,metadata
  5. transport_url = rabbit://rabbitmq:000000@controller:5672
  6. my_ip = 192.168.10.20
  7. use_neutron = true
  8. firewall_driver = nova.virt.firewall.NoopFirewallDriver
  9. vif_plugging_is_fatal = false
  10. vif_plugging_timeout = 0
  11. [neutron]
  12. auth_url = http://controller:5000
  13. auth_type = password
  14. project_domain_name = default
  15. user_domain_name = default
  16. region_name = RegionOne
  17. project_name = project
  18. username = neutron
  19. password = 000000
复制代码
(3)启动计算节点neutron服务
  1. [root@compute ~]# systemctl restart openstack-nova-compute
  2. [root@compute ~]# systemctl enable neutron-linuxbridge-agent
  3. Created symlink from /etc/systemd/system/multi-user.target.wants/neutron-linuxbridge-agent.service to /usr/lib/systemd/system/neutron-linuxbridge-agent.service.
  4. [root@compute ~]# systemctl start neutron-linuxbridge-agent
复制代码
6、检测neutron服务

2种方法检测neutron组件的运行状态,均在控制节点执行
  1. # 方法一:查看网络代理服务列表
  2. # 查询出四个数据,均为UP状态
  3. [root@controller ~]# openstack network agent list
  4. +--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
  5. | ID                                   | Agent Type         | Host       | Availability Zone | Alive | State | Binary                    |
  6. +--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
  7. | 0e2c0f8f-8fa7-4b64-8df2-6f1aedaa7c2b | Linux bridge agent | compute    | None              | :-)   | UP    | neutron-linuxbridge-agent |
  8. | c6688165-593d-4c5e-b25c-5ff2b6c75866 | Linux bridge agent | controller | None              | :-)   | UP    | neutron-linuxbridge-agent |
  9. | dc335348-5639-40d1-b121-3abfc9aefc8e | Metadata agent     | controller | None              | :-)   | UP    | neutron-metadata-agent    |
  10. | ddc49378-aea8-4f2e-b1b4-568fa4c85038 | DHCP agent         | controller | nova              | :-)   | UP    | neutron-dhcp-agent        |
  11. +--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
  12. # 方法二:用Neutron状态检测工具检测
  13. [root@controller ~]# neutron-status upgrade check
  14. +---------------------------------------------------------------------+
  15. | Upgrade Check Results                                               |
  16. +---------------------------------------------------------------------+
  17. | Check: Gateway external network                                     |
  18. | Result: Success                                                     |
  19. | Details: L3 agents can use multiple networks as external gateways.  |
  20. +---------------------------------------------------------------------+
  21. | Check: External network bridge                                      |
  22. | Result: Success                                                     |
  23. | Details: L3 agents are using integration bridge to connect external |
  24. |   gateways                                                          |
  25. +---------------------------------------------------------------------+
  26. | Check: Worker counts configured                                     |
  27. | Result: Warning                                                     |
  28. | Details: The default number of workers has changed. Please see      |
  29. |   release notes for the new values, but it is strongly              |
  30. |   encouraged for deployers to manually set the values for           |
  31. |   api_workers and rpc_workers.                                      |
  32. +---------------------------------------------------------------------+
复制代码
7、安装完成情况检测
  1. # 1.控制节点外网卡设置了混杂模式(PROMISC)
  2. [root@controller ~]# ip a
  3. 3: ens34: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  4. # 2.计算节点外网卡设置了混杂模式(PROMISC)
  5. [root@compute ~]# ip a
  6. 3: ens34: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  7. # 3.控制节点创建neutron用户和用户组
  8. [root@controller ~]# cat /etc/passwd | grep neutron
  9. neutron:x:990:987:OpenStack Neutron Daemons:/var/lib/neutron:/sbin/nologin
  10. [root@controller ~]# cat /etc/group | grep neutron
  11. neutron:x:987:
  12. # 4.计算节点创建neutron用户和用户组
  13. [root@compute ~]# cat /etc/passwd | grep neutron
  14. neutron:x:989:986:OpenStack Neutron Daemons:/var/lib/neutron:/sbin/nologin
  15. [root@compute ~]# cat /etc/group | grep neutron
  16. neutron:x:986:
  17. # 5.控制节点是否建立neutron数据库
  18. [root@controller ~]# mysql -uroot -p000000
  19. MariaDB [(none)]> show databases;
  20. +--------------------+
  21. | Database           |
  22. +--------------------+
  23. | glance             |
  24. | information_schema |
  25. | keystone           |
  26. | mysql              |
  27. | neutron            |
  28. # 6.检查neutron用户对数据库的权限
  29. MariaDB [(none)]> show grants for neutron;
  30. +--------------------------------------------------------------------------------------------------------+
  31. | Grants for neutron@%                                                                                   |
  32. +--------------------------------------------------------------------------------------------------------+
  33. | GRANT USAGE ON *.* TO 'neutron'@'%' IDENTIFIED BY PASSWORD '*032197AE5731D4664921A6CCAC7CFCE6A0698693' |
  34. | GRANT ALL PRIVILEGES ON `neutron`.* TO 'neutron'@'%'                                                   |
  35. +--------------------------------------------------------------------------------------------------------+
  36. # 7.检查neutron数据库中的数据表是否同步
  37. MariaDB [(none)]> use neutron;
  38. Database changed
  39. MariaDB [neutron]> show tables;
  40. +-----------------------------------------+
  41. | Tables_in_neutron                       |
  42. +-----------------------------------------+
  43. | address_scopes                          |
  44. | agents                                  |
  45. | alembic_version                         |
  46. | allowedaddresspairs                     |
  47. | arista_provisioned_nets                 |
  48. | arista_provisioned_tenants              |
  49. # 8.检查openstack用户列表
  50. [root@controller ~]# openstack user list | grep neutron
  51. | 67bd1f9c48174e3e96bb41e0f76687ca | neutron   |
  52. # 9.查看neutron用户是否有ADMIN权限
  53. [root@controller ~]# openstack role list | grep admin
  54. | 5eee0910aeb844a1b82f48100da7adc9 | admin  |
  55. [root@controller ~]# openstack role assignment list | grep 67bd1f9c48174e3e96bb41e0f76687ca
  56. | 5eee0910aeb844a1b82f48100da7adc9 | 67bd1f9c48174e3e96bb41e0f76687ca |       | e3a549077f354998aa1a75677cfde62e |        |        | False     |
  57. # 10.检查是否创建了服务实体neutron
  58. [root@controller ~]# openstack service list
  59. +----------------------------------+-----------+-----------+
  60. | ID                               | Name      | Type      |
  61. +----------------------------------+-----------+-----------+
  62. | 324a07034ea4453692570e3edf73cf2c | glance    | image     |
  63. | 459c365a11c74e5894b718b5406022a8 | neutron   | network   |
  64. # 11.neutron的三个域端点是否创建
  65. [root@controller ~]# openstack endpoint list | grep neutron
  66. | 1d59d497c89c4fa9b8789d685fab9fe5 | RegionOne | neutron      | network      | True    | public    | http://controller:9696      |
  67. | 44de22606819441aa845b370a9304bf5 | RegionOne | neutron      | network      | True    | internal  | http://controller:9696      |
  68. | 75e7eaf8bc664a2c901b7ad58141bedc | RegionOne | neutron      | network      | True    | admin     | http://controller:9696
  69. # 12.查看网络代理列表,检查服务是否正常运行
  70. [root@controller ~]# openstack network agent list
  71. +--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
  72. | ID                                   | Agent Type         | Host       | Availability Zone | Alive | State | Binary                    |
  73. +--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
  74. | 0e2c0f8f-8fa7-4b64-8df2-6f1aedaa7c2b | Linux bridge agent | compute    | None              | :-)   | UP    | neutron-linuxbridge-agent |
  75. | c6688165-593d-4c5e-b25c-5ff2b6c75866 | Linux bridge agent | controller | None              | :-)   | UP    | neutron-linuxbridge-agent |
  76. | dc335348-5639-40d1-b121-3abfc9aefc8e | Metadata agent     | controller | None              | :-)   | UP    | neutron-metadata-agent    |
  77. | ddc49378-aea8-4f2e-b1b4-568fa4c85038 | DHCP agent         | controller | nova              | :-)   | UP    | neutron-dhcp-agent        |
  78. +--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+ 
复制代码
六:仪表盘服务(dashboard)部署

提供了图形化界面来管理openstack平台,就是一个web前端控制台
1、安装dashboard软件包

在计算节点安装dashboard软件包
  1. [root@compute ~]# yum install -y openstack-dashboard
复制代码
2、修改horizon配置文件
  1. # 修改Horizon配置文件
  2. [root@compute ~]# vi /etc/openstack-dashboard/local_settings
  3. # 控制节点位置
  4. OPENSTACK_HOST = "controller"
  5. OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
  6. # 启用对多域的支持
  7. OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
  8. # 配置API版本
  9. OPENSTACK_API_VERSIONS = {
  10.     "identity": 3,
  11.     "image": 2,
  12.     "volume": 3
  13. }
  14. # 配置通过仪表盘创建的用户默认域为Default
  15. OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
  16. # 配置通过仪表盘创建的用户默认角色为user
  17. OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
  18. # 修改配置二层网络
  19. OPENSTACK_NEUTRON_NETWORK = {
  20.     'enable_auto_allocated_network': False,
  21.     'enable_distributed_router': False,
  22.     'enable_fip_topology_check': False,
  23.     'enable_ha_router': False,
  24.     'enable_ipv6': False,
  25.     'enable_quotas': False,
  26.     'enable_rbac_policy': False,
  27.     'enable_router': False,
  28.     'default_dns_nameservers': [],
  29.     'supported_provider_types': ['*'],
  30.     'segmentation_id_range': {},
  31.     'extra_provider_types': {},
  32.     'supported_vnic_types': ['*'],
  33.     'physical_networks': [],
  34. }
  35. # 配置时区
  36. TIME_ZONE = "Asia/Shanghai"
  37. # 允许从任意主机访问
  38. ALLOWED_HOSTS = ['*']
  39. # 配置使用缓存服务
  40. CACHES = {
  41.     'default': {
  42.         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
  43.         'LOCATION': 'controller:11211',
  44.     },
  45. }
  46. SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
复制代码
(3)重建apache下dashboard配置文件

dashboard是一个web应用,必须运行在apache这样的服务器因此要设置让apache知道如何运行该服务
  1. # 进入Dashboard网站目录
  2. [root@compute ~]# cd /usr/share/openstack-dashboard/
  3. [root@compute openstack-dashboard]# ls
  4. manage.py  manage.pyc  manage.pyo  openstack_dashboard  static
  5. # 编译生成Dashboard的WEB服务文件
  6. [root@compute openstack-dashboard]# python manage.py make_web_conf --apache > /etc/httpd/conf.d/openstack-dashboard.conf
  7. [root@compute openstack-dashboard]# cat /etc/httpd/conf.d/openstack-dashboard.conf
  8. <VirtualHost *:80>
  9.     ServerAdmin webmaster@openstack.org
  10.     ServerName  openstack_dashboard
  11.     DocumentRoot /usr/share/openstack-dashboard/
  12.     LogLevel warn
  13.     ErrorLog /var/log/httpd/openstack_dashboard-error.log
  14.     CustomLog /var/log/httpd/openstack_dashboard-access.log combined
  15.     WSGIScriptReloading On
  16.     WSGIDaemonProcess openstack_dashboard_website processes=3
  17.     WSGIProcessGroup openstack_dashboard_website
  18.     WSGIApplicationGroup %{GLOBAL}
  19.     WSGIPassAuthorization On
  20.     WSGIScriptAlias / /usr/share/openstack-dashboard/openstack_dashboard/wsgi.py
  21.     <Location "/">
  22.         Require all granted
  23.     </Location>
  24.     Alias /static /usr/share/openstack-dashboard/static
  25.     <Location "/static">
  26.         SetHandler None
  27.     </Location>
  28. </Virtualhost> 
复制代码
这样就是实现了apache的web服务器配置目录下生成一个配置文件
4、建立策略文件软连接

在/etc/openstack-dashboard目录下保存了一些dashboard与其他组件交互式的默认策略
  1. # 查看交互默认策略
  2. [root@compute ~]# cd /etc/openstack-dashboard/
  3. [root@compute openstack-dashboard]# ls
  4. cinder_policy.json  keystone_policy.json  neutron_policy.json  nova_policy.json
  5. glance_policy.json  local_settings        nova_policy.d
  6. # 将这些策略链接到Dashboard项目中,让策略生效
  7. [root@compute openstack-dashboard]# ln -s /etc/openstack-dashboard /usr/share/openstack-dashboard/openstack_dashboard/conf
  8. [root@compute openstack-dashboard]# ll /usr/share/openstack-dashboard/openstack_dashboard/
  9. total 240
  10. drwxr-xr-x  3 root root  4096 Nov 18 15:00 api
  11. lrwxrwxrwx  1 root root    24 Nov 18 15:33 conf -> /etc/openstack-dashboard
复制代码
5、启动服务并验证
  1. # Apaceh服务开机启动和重启
  2. [root@compute ~]# systemctl enable httpd
  3. Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
  4. [root@compute ~]# systemctl restart httpd
复制代码
访问计算节点的ip地址
用户名admin,密码000000 
七: 块存储服务(cinder部署)

控制节点和计算节点部署配置cinder服务
1、控制节点安装和配置cinder

(1)安装cinder软件包

在openstack-cinder软件包中包括cinder-api和cindder-scheduler模块
  1. # 安装cinder软件包
  2. [root@controller ~]# yum install -y openstack-cinder
  3. # 查看cinder用户和用户组
  4. [root@controller ~]# cat /etc/passwd | grep cinder
  5. cinder:x:165:165:OpenStack Cinder Daemons:/var/lib/cinder:/sbin/nologin
  6. [root@controller ~]# cat /etc/group | grep cinder
  7. nobody:x:99:nova,cinder
  8. cinder:x:165:cinder
复制代码
(2)创建cinder数据库并授权
  1. # 登录数据库
  2. [root@controller ~]# mysql -uroot -p000000
  3. # 创建cinder数据库
  4. MariaDB [(none)]> CREATE DATABASE cinder;
  5. Query OK, 1 row affected (0.004 sec)
  6. # 给cinder用户授权本地和远程访问
  7. MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY '000000';
  8. Query OK, 0 rows affected (0.007 sec)
  9. MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY '000000';
  10. Query OK, 0 rows affected (0.000 sec)
复制代码
(3)修改cinder配置文件  
  1. # 备份配置文件
  2. [root@controller ~]# cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.bak
  3. # 去除配置文件空行和注释
  4. [root@controller ~]# grep -Ev '^$|#' /etc/cinder/cinder.conf.bak > /etc/cinder/cinder.conf
  5. # 编辑配置文件
  6. [root@controller ~]# vi /etc/cinder/cinder.conf
  7. [DEFAULT]
  8. auth_strategy = keystone
  9. transport_url = rabbit://rabbitmq:000000@controller:5672
  10. [database]
  11. connection = mysql+pymysql://cinder:000000@controller/cinder
  12. [keystone_authtoken]
  13. auth_url = http://controller:5000
  14. memcached_servers = controller:11211
  15. auth_type = password
  16. username = cinder
  17. password = 000000
  18. project_name = project
  19. user_domain_name = Default
  20. project_domain_name = Default
  21. [oslo_concurrency]
  22. lock_path = /var/lib/cinder/tmp
复制代码
(4)修改Nova配置文件

cinder与nova交互,需要修改nova配置文件
  1. [root@controller ~]# vi /etc/nova/nova.conf
  2. [cinder]
  3. os_region_name = RegionOne
复制代码
(5)初始化cinder数据库
  1. # 执行初始化操作,同步数据库
  2. [root@controller ~]# su cinder -s /bin/sh -c "cinder-manage db sync"
  3. Deprecated: Option "logdir" from group "DEFAULT" is deprecated. Use option "log-dir" from group "DEFAULT".
  4. # 验证查看cinder库里的表
  5. MariaDB [cinder]> show tables;
  6. +----------------------------+
  7. | Tables_in_cinder           |
  8. +----------------------------+
  9. | attachment_specs           |
  10. | backup_metadata            |
  11. | backups                    |
复制代码
(6)创建cinder用户并分配角色
  1. # 模拟登陆
  2. [root@controller ~]# source admin-login
  3. # 平台创建cinder用户
  4. [root@controller ~]# openstack user create --domain default --password 000000 cinder
  5. +---------------------+----------------------------------+
  6. | Field               | Value                            |
  7. +---------------------+----------------------------------+
  8. | domain_id           | default                          |
  9. | enabled             | True                             |
  10. | id                  | b9a2bdfcbf3b445ab0db44c9e35af678 |
  11. | name                | cinder                           |
  12. | options             | {}                               |
  13. | password_expires_at | None                             |
  14. +---------------------+----------------------------------+
  15. # 给用户cinder分配admin角色
  16. [root@controller ~]# openstack role add --project project --user cinder admin
复制代码
(7)创建cinder服务及端点
  1. # 创建服务
  2. [root@controller ~]# openstack service create --name cinderv3 volumev3
  3. +---------+----------------------------------+
  4. | Field   | Value                            |
  5. +---------+----------------------------------+
  6. | enabled | True                             |
  7. | id      | 90dc0dcf9879493d98144b481ea0df2b |
  8. | name    | cinderv3                         |
  9. | type    | volumev3                         |
  10. +---------+----------------------------------+
  11. # 创建服务端点
  12. [root@controller ~]# openstack endpoint create --region RegionOne volumev3 public http://controller:8776/v3/%\(project_id\)s
  13. +--------------+------------------------------------------+
  14. | Field        | Value                                    |
  15. +--------------+------------------------------------------+
  16. | enabled      | True                                     |
  17. | id           | 6bb167be751241d1922a81b6b4c18898         |
  18. | interface    | public                                   |
  19. | region       | RegionOne                                |
  20. | region_id    | RegionOne                                |
  21. | service_id   | 90dc0dcf9879493d98144b481ea0df2b         |
  22. | service_name | cinderv3                                 |
  23. | service_type | volumev3                                 |
  24. | url          | http://controller:8776/v3/%(project_id)s |
  25. +--------------+------------------------------------------+
  26. [root@controller ~]# openstack endpoint create --region RegionOne volumev3 internal http://controller:8776/v3/%\(project_id\)s
  27. +--------------+------------------------------------------+
  28. | Field        | Value                                    |
  29. +--------------+------------------------------------------+
  30. | enabled      | True                                     |
  31. | id           | e8ad2286c57443a5970e9d17ca33076a         |
  32. | interface    | internal                                 |
  33. | region       | RegionOne                                |
  34. | region_id    | RegionOne                                |
  35. | service_id   | 90dc0dcf9879493d98144b481ea0df2b         |
  36. | service_name | cinderv3                                 |
  37. | service_type | volumev3                                 |
  38. | url          | http://controller:8776/v3/%(project_id)s |
  39. +--------------+------------------------------------------+
  40. [root@controller ~]# openstack endpoint create --region RegionOne volumev3 admin http://controller:8776/v3/%\(project_id\)s
  41. +--------------+------------------------------------------+
  42. | Field        | Value                                    |
  43. +--------------+------------------------------------------+
  44. | enabled      | True                                     |
  45. | id           | dd6d3b221e244cd5a5bb6a2b33159c1d         |
  46. | interface    | admin                                    |
  47. | region       | RegionOne                                |
  48. | region_id    | RegionOne                                |
  49. | service_id   | 90dc0dcf9879493d98144b481ea0df2b         |
  50. | service_name | cinderv3                                 |
  51. | service_type | volumev3                                 |
  52. | url          | http://controller:8776/v3/%(project_id)s |
  53. +--------------+------------------------------------------+
复制代码
(8)启动cinder服务
  1. # 重启nova服务(配置文件改过了)
  2. [root@controller ~]# systemctl restart openstack-nova-api
  3. # 开机启动
  4. [root@controller ~]# systemctl enable openstack-cinder-api openstack-cinder-scheduler
  5. Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-cinder-api.service to /usr/lib/systemd/system/openstack-cinder-api.service.
  6. Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-cinder-scheduler.service to /usr/lib/systemd/system/openstack-cinder-scheduler.service.
  7. # 立即启动
  8. [root@controller ~]# systemctl start openstack-cinder-api openstack-cinder-scheduler
复制代码
(9)检测控制节点cinder服务
  1. # 方法一:查看8776端口占用情况
  2. [root@controller ~]# netstat -nutpl | grep 8776
  3. tcp        0      0 0.0.0.0:8776            0.0.0.0:*               LISTEN      15517/python2
  4. # 方法二:查看存储服务列表,是否处于UP状态
  5. [root@controller ~]# openstack volume service list
  6. +------------------+------------+------+---------+-------+----------------------------+
  7. | Binary           | Host       | Zone | Status  | State | Updated At                 |
  8. +------------------+------------+------+---------+-------+----------------------------+
  9. | cinder-scheduler | controller | nova | enabled | up    | 2022-11-18T11:08:47.000000 |
  10. +------------------+------------+------+---------+-------+----------------------------+
复制代码
2、搭建存储节点

(1)为计算节点添加硬盘
 
(2)创建卷组
cinder使用lvm来实现块设备(卷)的管理
  1. # 1.查看系统硬盘挂载情况
  2. [root@compute ~]# lsblk
  3. NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
  4. sda               8:0    0   40G  0 disk
  5. ├─sda1            8:1    0    1G  0 part /boot
  6. └─sda2            8:2    0   39G  0 part
  7.   ├─centos-root 253:0    0   35G  0 lvm  /
  8.   └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
  9. sdb               8:16   0   40G  0 disk     《—————sdb设备还没有分区和挂载
  10. sr0              11:0    1 1024M  0 rom  
  11. # 2.创建LVM物理卷组
  12. # 2.1 硬盘初始化为物理卷
  13. [root@compute ~]# pvcreate /dev/sdb
  14.   Physical volume "/dev/sdb" successfully created.
  15. # 2.2 物理卷归并为卷组
  16. # 格式:vgcreate 卷组名  物理卷...
  17. [root@compute ~]# vgcreate cinder-volumes /dev/sdb
  18.   Volume group "cinder-volumes" successfully created
  19. # 2.3 修改LVM配置
  20. # 在配置文件中的devices部分,添加过滤器,只接受/dev/sdb
  21. # a表示接受,r表示拒绝
  22. [root@compute ~]# vi /etc/lvm/lvm.conf
  23. devices {
  24.         filter = ["a/sdb/","r/.*/"]
  25. # 3.启动LVM元数据服务
  26. [root@compute ~]# systemctl enable lvm2-lvmetad
  27. [root@compute ~]# systemctl start lvm2-lvmetad
复制代码
3、安装和配置存储节点

均在计算节点操作
(1)安装cinder相关的软件包

openstack-cinder是cinder的软件包
targetcli是一个命令行工具,用于管理Linux的存储资源
python-keystone是与keystone的连接插件
  1. [root@compute ~]# yum install -y openstack-cinder targetcli python-keystone
复制代码
(2)配置文件修改
  1. # 备份配置文件
  2. [root@compute ~]# cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.bak
  3. # 去除空行和注释
  4. [root@compute ~]# grep -Ev '^$|#' /etc/cinder/cinder.conf.bak > /etc/cinder/cinder.conf
  5. # 修改配置文件
  6. # 配置文件中“volume_group”的值应和“创建LVM物理卷组”部分创建的卷组名一致:cinder-volumes
  7. [root@compute ~]# vi /etc/cinder/cinder.conf
  8. [DEFAULT]
  9. auth_stategy = keystone
  10. transport_url = rabbit://rabbitmq:000000@controller:5672
  11. enabled_backends = lvm
  12. glance_api_servers = http://controller:9292
  13. [lvm]
  14. volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
  15. volume_group = cinder-volumes
  16. target_protocol = iscsi
  17. target_helper = lioadm
  18. [database]
  19. connection = mysql+pymysql://cinder:000000@controller/cinder
  20. [keystone_authtoken]
  21. auth_url = http://controller:5000
  22. memcached_servers = controller:11211
  23. auth_type = password
  24. username = cinder
  25. password = 000000
  26. project_name = project
  27. user_domain_name = Default
  28. project_domain_name = Default
  29. [oslo_concurrency]
  30. lock_path = /var/lib/cinder/tmp
复制代码
(3)存储节点启动cinder服务
  1. [root@compute ~]# systemctl enable openstack-cinder-volume target
  2. Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-cinder-volume.service to /usr/lib/systemd/system/openstack-cinder-volume.service.
  3. Created symlink from /etc/systemd/system/multi-user.target.wants/target.service to /usr/lib/systemd/system/target.service.
  4. [root@compute ~]# systemctl start openstack-cinder-volume target
复制代码
4、检查cinder服务
  1. # 方法一:查看存储服务列表
  2. # 查看Cinder服务中各个模块的服务状态
  3. [root@controller ~]# openstack volume service list
  4. +------------------+-------------+------+---------+-------+----------------------------+
  5. | Binary           | Host        | Zone | Status  | State | Updated At                 |
  6. +------------------+-------------+------+---------+-------+----------------------------+
  7. | cinder-scheduler | controller  | nova | enabled | up    | 2022-11-18T12:15:46.000000 |
  8. | cinder-volume    | compute@lvm | nova | enabled | up    | 2022-11-18T12:15:43.000000 |
  9. +------------------+-------------+------+---------+-------+----------------------------+
  10. # 方法二:查看Dashboard检查卷状态
  11. # 1.左侧导航栏出现卷的选项
  12. # 2.在项目概况中出现卷、卷快照、卷存储三个饼图
复制代码
5、用cinder创建卷

(1)命令模式创建卷

要在控制节点上面执行命令
  1. [root@controller ~]# openstack volume create --size 8 volume1
  2. +---------------------+--------------------------------------+
  3. | Field               | Value                                |
  4. +---------------------+--------------------------------------+
  5. | attachments         | []                                   |
  6. | availability_zone   | nova                                 |
  7. | bootable            | false                                |
  8. | consistencygroup_id | None                                 |
  9. | created_at          | 2022-11-25T06:26:14.000000           |
  10. | description         | None                                 |
  11. | encrypted           | False                                |
  12. | id                  | 690449e4-f950-4949-a0d4-7184226a2447 |
  13. | migration_status    | None                                 |
  14. | multiattach         | False                                |
  15. | name                | volume1                              |
  16. | properties          |                                      |
  17. | replication_status  | None                                 |
  18. | size                | 8                                    |
  19. | snapshot_id         | None                                 |
  20. | source_volid        | None                                 |
  21. | status              | creating                             |
  22. | type                | __DEFAULT__                          |
  23. | updated_at          | None                                 |
  24. | user_id             | f4f16d960e0643d7b5a35db152c87dae     |
  25. +---------------------+--------------------------------------+
  26. [root@controller ~]# openstack volume list
  27. +--------------------------------------+---------+-----------+------+-------------+
  28. | ID                                   | Name    | Status    | Size | Attached to |
  29. +--------------------------------------+---------+-----------+------+-------------+
  30. | 690449e4-f950-4949-a0d4-7184226a2447 | volume1 | available |    8 |             |
  31. +--------------------------------------+---------+-----------+------+-------------+
复制代码
(2)用dashboard创建

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
 
  
  
  
  
  
  
  
  
  
 
 
 
 
 
 
 
 
 
 
 
  
  
 

来源:https://www.cnblogs.com/qw77/p/18170564
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具