Ubuntu 18.04上单机安装OpenStack Stein(非脚本方式):前置准备
硬盘分区
我在电脑里装了双系统,安装Ubuntu系统时在硬盘上划出四个分区sda9~sda12:
- sda9:系统分区
- sda10:swap分区
- sda11:未使用,将用于Cinder块存储服务
- sda12:未使用,将用于Swift对象存储服务
安装KVM虚拟系统管理器并配置虚拟网络设备
检查CPU是否支持虚拟化
在终端输入如下指令,检查结果是否为0。如果结果为0则说明CPU不支持虚拟化,如果为>=1则说明支持。
$ egrep -c '(svm|vmx)' /proc/cpuinfo
安装KVM相关软件包
$ sudo apt-get install qemu qemu-kvm libvirt-bin bridge-utils virt-manager
安装完成后重启系统
配置虚拟网络设备
因为只打算把OpenStack部署在一台电脑上,并且只有本机才能远程访问虚拟机,不允许物理网络中的其他设备访问,因此通过创建一个虚拟网络作为OpenStack的外部网络,但物理网络中的其他设备可通过登陆本机控制虚拟机。
输入如下指令启动虚拟系统管理器
$ sudo virt-manager
打开后点击“编辑”—“连接详情”,在弹出窗口中点击左下角的“+”创建虚拟网络,CIDR为192.168.100.0/24,开启DHCP,通过NAT转发到物理网卡端口。
完成后打开终端,输入ifconfig查看结果
$ ifconfig
enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.31.118 netmask 255.255.255.0 broadcast 192.168.31.255
inet6 fe80::16dd:a9ff:fe2a:78fd prefixlen 64 scopeid 0x20<link>
ether 14:dd:a9:2a:78:fd txqueuelen 1000 (以太网)
RX packets 188763 bytes 129675935 (129.6 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 101226 bytes 15159975 (15.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (本地环回)
RX packets 12532 bytes 1339215 (1.3 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12532 bytes 1339215 (1.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.100.1 netmask 255.255.255.0 broadcast 192.168.100.255
ether 52:54:00:86:e8:d9 txqueuelen 1000 (以太网)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
其中enp3s0为物理网卡端口,物理网络的其他设备可通过地址192.168.31.118访问本机,virbr0为新添加的虚拟网络设备端口。
修改hosts文件
在终端输入如下指令编辑hosts文件
$ sudo vim /etc/hosts
在打开的文件中添加如下键值
192.168.31.118 controller
完成后保存退出,然后在终端输入如下指令验证结果
$ ping -c 4 controller
PING controller (192.168.31.118) 56(84) bytes of data.
64 bytes from controller (192.168.31.118): icmp_seq=1 ttl=64 time=0.060 ms
64 bytes from controller (192.168.31.118): icmp_seq=2 ttl=64 time=0.060 ms
64 bytes from controller (192.168.31.118): icmp_seq=3 ttl=64 time=0.056 ms
64 bytes from controller (192.168.31.118): icmp_seq=4 ttl=64 time=0.044 ms
--- controller ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3056ms
rtt min/avg/max/mdev = 0.044/0.055/0.060/0.006 ms
生成密码的方法
在终端输入如下指令可生成随机十六进制数,可作为OpenStack各项服务和用户所使用的密码。
$ openssl rand -hex 6
下表列出各密码名称并描述其所关联的对象:
密码名称 | 描述 |
---|---|
数据库密码 | 登陆root权限用的密码 |
ADMIN_PASS | admin用户密码 |
CINDER_DBPASS | 块存储服务的数据库密码 |
CINDER_PASS | 块存储服务使用的cinder用户密码 |
DASH_DBPASS | Dashboard的数据库密码 |
DEMO_PASS | demo用户密码 |
GLANCE_DBPASS | 镜像服务的数据库密码 |
GLANCE_PASS | 镜像服务使用的glance用户密码 |
KEYSTONE_DBPASS | 身份认证服务的数据库密码 |
METADATA_SECRET | 元数据代理密码 |
NEUTRON_DBPASS | 网络服务的数据库密码 |
NEUTRON_PASS | 网络服务使用的neutron用户密码 |
NOVA_DBPASS | 计算服务的数据库密码 |
NOVA_PASS | 计算服务使用的nova用户密码 |
PLACEMENT_PASS | 安置服务使用的placement用户密码 |
RABBIT_PASS | RabbitMQ的openstack用户密码 |
相关软件包安装和配置
启用Ubuntu Cloud Archive库
# add-apt-repository cloud-archive:stein
更新软件包
# apt-get update && apt-get dist-upgrade
安装OpenStack客户端
# apt-get install python3-openstackclient
安装MariaDB和MySQL
# apt-get install mariadb-server python-pymysql
输入如下指令编辑配置文件
#vim /etc/mysql/mariadb.conf.d/99-openstack.cnf
在打开的文件中添加如下键值
[mysqld]
bind-address = 192.168.31.118
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
重启数据库
# service mysql restart
进行安全加固
# mysql_secure_installation
安装Memcached
# apt-get install memcached python-memcache
输入如下指令编辑Memcached配置文件
# vim /etc/memcached.conf
在打开的文件中修改如下键值
-l 10.0.0.11
重启Memcached服务
# service memcached restart
安装消息队列
# apt-get install rabbitmq-server
添加openstack用户
# rabbitmqctl add_user openstack RABBIT_PASS
用之前对应生成的十六进制数代替“RABBIT_PASS”字段
授予openstack用户完全的权限
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
安装ETCD
# apt-get install etcd
输入如下指令编辑配置文件
#vim /etc/default/etcd
在打开的文件中添加如下键值
ETCD_NAME="controller"
ETCD_DATA_DIR="/var/lib/etcd"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER="controller=http://192.168.31.118:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.31.118:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.31.118:2379"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.31.118:2379"
使能并开启ETCD服务
# systemctl enable etcd
# systemctl start etcd
参考链接: https://docs.openstack.org/install-guide/environment.html.