文章目录
基础配置
基础中的基础
我这里用的是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
控制节点
在我装完我才想起来,这个是不是应该装在存储节点上。。。。
创建数据库
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
控制节点
先创建数据库
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