Ubuntu 20.04集群手动安装OpenStack Yoga

基础配置

基础中的基础

我这里用的是Ubuntu 20.04,开局白板啥都没有。
需要的几个前置:

  • 安装系统的名称设置
  • 配置networking
  • 配置ssh

换源
apt源
/etc/apt/sources.list换成自己的源安装
pip源

名称
在安装ubuntu 20.04的时候,需要填写几个名称

  • name:应该是root用户名
  • computer’s name:这个就是主机名hostname
  • username:普通用户名

networking
好像已经使用netplan和NetworkManager管理网络,但是因为centos不用NM,而且为了方便,我这里使用network管理网络。

下面的都是错的
下面的都是错的
下面的都是错的
下面的都是错的
首先需要安装几个软件,分别是networking服务、网桥工具以及网络工具(比如ifconfig)。
只有有了网桥工具才能正常创建网桥,不然会报错

apt install ifupdown bridge-utils net-tools --allow-unauthenticated

我这里的集群环境是

  • 局域网网段:192.168.113.0/24
  • 管理网桥br-mgmt:172.23.57.0/24

配置网络环境,网桥如何搭建的可以参考我的allinone文章,这里直接放配置文件/etc/network/interfaces

filename:/etc/network/interfaces

auto lo
iface lo inet loopback

# The primary network interface

auto ens33
iface ens33 inet manual

# inside bridge network port

auto br-ens33
iface br-ens33 inet static
address 192.168.1.210
netmask 255.255.255.0
gateway 192.168.1.1
bridge_ports ens33
bridge_stp off
bridge_fd 1

auto br-mgmt
iface br-mgmt inet static
address 10.17.23.10
netmask 255.255.255.0
bridge_ports ens33
bridge_stp off
bridge_fd 2

下面的才是对的
下面的才是对的
下面的才是对的
下面的才是对的
Ubuntu 通过 Netplan 配置网络教程
配置网桥的方式,似乎根本行不通,主网桥没问题,但是管理网桥一直ping不同,traceroute以后发现好像ping发不出主机我不知道为什么。
然后修改一下想法,直接给网卡设置多个IP吧,多网段就行了。
修改配置文件/etc/netplan/01-network-manager-all.yaml

network:
  version: 2
  render: NetworkManager
  ethernets:
    enp12s0:
      addresses:
        - 192.168.113.10/24
        - 172.23.57.10/24
      #gateway: 192.168.113.1  不需要gateway了
      routes:
        - to: 0.0.0.0/0
          via: 192.168.113.1
        - to: 172.23.57.0/24
          via: 172.23.57.1
      nameservers:
        addresses: [114.114.114.114,8.8.4.4]

然后重启网络systemctl restart NetworkManager即可
执行netplan apply应用网络配置。
然后需要重启一下主机,让他应用配置并且生成相应的路由。
ssh
然后为了能够访问,需要配置一下ssh。
安装ssh

apt install openssh-server -y

然后修改一下配置文件/etc/ssh/sshd_config

注释:PermitRootLogin prohibit-password
添加:PermitRootLogin yes

注释:PasswordAuthentication no
添加:PasswordAuthentication yes

重启服务

service ssh restart

现在基础的基础就差不多了,然后就可以比如说ssh进来测试之类的了

软件配置

参考这个文章吧
Ubuntu 20.04 搭建OpenStack Yoga(allinone)

OpenStack

keystone

这里的keystone我选择装在主控,两个子集群公用一个keystone
首先我觉得这里得安装个数据库
按照上面的步骤安装数据库
创建数据库并授权

CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '12345678';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '12345678';

安装

apt install keystone crudini

修改配置文件/etc/keystone/keystone.conf

crudini --set /etc/keystone/keystone.conf database connection "mysql+pymysql://keystone:${password}@controller/keystone"
crudini --set /etc/keystone/keystone.conf token provider fernet

同步数据库

su -s /bin/sh -c "keystone-manage db_sync" keystone

初始化一下Fernet key仓库

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

创建一个管理员用户,这里需要区别操作一下,创建用户应该都是在主控这里进行的,通过Region区分
这里创建一个controller1集群RegionThree的admin用户

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

这里应该安装一下openstack的一些东西,因为需要在主控执行一些命令,比如创建端点服务之类的

apt install python3-openstackclient

这里需要创建一个脚本


创建服务项目和普通用户等

openstack project create --domain default --description "Service Project" service
openstack project create --domain default --description "Demo Project" demo
openstack user create --domain default --password demo demo
openstack role create role_demo
openstack role add --project demo --user demo role_demo
X11转发

当我在xshell里面执行openstack命令的时候报错需要x11转发之类的。需要下载xmanager,我不知道这是啥原因。
但是解决方法就是右键这个连接的属性,然后找到隧道,关闭x11的转发,重新建立连接就好了。

Glance

Glance Installation

控制节点

在我装完我才想起来,这个是不是应该装在存储节点上。。。。

创建数据库

CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '12345678';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '12345678';

创建服务项目和用户
这里需要注意,这里使用的是指定service name,如果是这种公用keystone的情况,service创建一个就行了,多个集群共用一个service,不用重复执行了

openstack user create --domain default --password 12345678 glance
openstack role add --project service --user glance admin
openstack service create --name glance --description "OpenStack Image" image

然后创建端点组

openstack endpoint create --region RegionThree image public http://subcontroller1:9292
openstack endpoint create --region RegionThree image internal http://subcontroller1:9292
openstack endpoint create --region RegionThree image admin http://subcontroller1:9292

修改配置文件/etc/glance/glance-api.conf,多集群这里记得后面的controller正确书写

[database]
connection = mysql+pymysql://glance:12345678@controller1/glance

[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller1:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = 12345678

[paste_deploy]
flavor = keystone

[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

[oslo_limit]
auth_url = http://controller:5000
auth_type = password
user_domain_id = default
username = MY_SERVICE
system_scope = all
password = 12345678
service_name = glance
region_name = RegionThree

配置一下权限
openstack role add --user MY_SERVICE --user-domain Default --system all reader
更新数据库

su -s /bin/sh -c "glance-manage db_sync" glance

重启服务service glance-api restart

现在就安装好了
然后上传一个镜像文件测试一下

glance image-create --name "cirros" \
  --file cirros-0.4.0-x86_64-disk.img \
  --disk-format qcow2 --container-format bare \
  --visibility=public

查看glance image-list

Placement

控制节点

先初始化数据库授权

CREATE DATABASE placement;
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY '12345678';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY '12345678';

创建用户和服务
如果多集群使用一个keystone,只需要创建一次即可

openstack user create --domain default --password 12345678 placement
openstack role add --project service --user placement admin
openstack service create --name placement --description "Placement API" placement

创建端点组

openstack endpoint create --region RegionThree placement public http://subcontroller1:8778
openstack endpoint create --region RegionThree placement internal http://subcontroller1:8778
openstack endpoint create --region RegionThree placement admin http://subcontroller1:8778

安装placement

apt install placement-api

修改配置文件/etc/placement/placement.conf

[placement_database]
connection = mysql+pymysql://placement:12345678@controller1/placement

[api]
auth_strategy = keystone

[keystone_authtoken]
auth_url = http://controller:5000/v3
memcached_servers = controller1:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = placement
password = 12345678

同步数据库

su -s /bin/sh -c "placement-manage db sync" placement

重启阿帕奇

service apache2 restart

现在安装完成了,然后就可以验证了,执行如下命令

root@controller1 (admin) placement : # placement-status upgrade check
+-------------------------------------------+
| Upgrade Check Results                     |
+-------------------------------------------+
| Check: Missing Root Provider IDs          |
| Result: Success                           |
| Details: None                             |
+-------------------------------------------+
| Check: Incomplete Consumers               |
| Result: Success                           |
| Details: None                             |
+-------------------------------------------+
| Check: Policy File JSON to YAML Migration |
| Result: Success                           |
| Details: None                             |
+-------------------------------------------

这里还可以装一个奇怪包osc-placement

pip3 install osc-placement

Nova

Compute service

控制节点

先创建数据库

CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '12345678';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '12345678';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '12345678';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '12345678';

GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '12345678';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '12345678';

创建服务项目和用户
这里需要注意,这里使用的是指定service name,如果是这种公用keystone的情况,service创建一个就行了,多个集群共用一个service,不用重复执行了

openstack user create --domain default --password 12345678 nova
openstack role add --project service --user nova admin
openstack service create --name nova --description "OpenStack Compute" compute

创建端点组

openstack endpoint create --region RegionThree compute public http://controller1:8774/v2.1
openstack endpoint create --region RegionThree compute internal http://controller1:8774/v2.1
openstack endpoint create --region RegionThree compute admin http://controller1:8774/v2.1

安装一下包

apt install nova-api nova-conductor nova-novncproxy nova-scheduler

修改配置文件/etc/nova/nova.conf

[api_database]
connection = mysql+pymysql://nova:12345678@controller1/nova_api

[database]
connection = mysql+pymysql://nova:12345678@controller1/nova

[DEFAULT]
transport_url = rabbit://openstack:12345678@controller1:5672/

[api]
auth_strategy = keystone

[keystone_authtoken]
www_authenticate_uri = http://controller:5000/
auth_url = http://controller:5000/
memcached_servers = controller1:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = 12345678

[DEFAULT]
my_ip = 172.23.47.10

[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip

[glance]
api_servers = http://controller1:9292

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

[placement]
region_name = RegionThree
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name 
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值