记录大佬的博客全文转载于https://www.voidking.com/dev-ubuntu16-manual-openstack-env/

前言

《Ubuntu16安装OpenStack》一文中,使用devstack在物理机上安装了OpenStack的Queens版本。但是,在后来的《OpenStack添加镜像》实验中,遇到了很多奇怪的问题,遂决定重装OpenStack。

本次安装,计划采用一步步手动安装的方式,在两个节点上,最小安装OpenStack的Queens版本。主要参考OpenStack Queens Installation Guides,首先配置环境,然后安装必要的组件,包括keystone、glance、nova、neutron。再之后,选择安装horizon、cinder和swift。

本文,就记录一下配置环境的过程。

准备

本次安装使用两台VirtualBox虚拟机,一个控制节点和一个计算节点,系统均为ubuntu-16.04.4-server-amd64。控制节点1核4G内存40G存储,计算节点1核2G内存40G存储。

这两台虚拟机,都有三块网卡。eth0负责主机间相互通信,eth1负责上网,eth2负责neutron网络服务。两张eth0网卡在同一网络,两张eth2网卡在同一网络。

IP配置

参考VirtualBox下CentOS7和Ubuntu16.04网络配置,修改网卡名,然后配置静态IP。控制节点eth0配置为192.168.56.110,计算节点eth0配置为192.168.56.111。

主机名配置

参考VirtualBox下CentOS7和Ubuntu16.04网络配置,配置控制节点主机名为controller,计算节点主机名为compute。

然后编辑/etc/hosts,添加:

1
2
192.168.56.110  controller
192.168.56.111 compute

设置sudo免密

编辑sudoers,vim /etc/sudoers
在最后添加一行:

1
test ALL = NOPASSWD: ALL

更换源列表

修改/etc/apt/sources.list,参考Ubuntu更换源列表,更换为Ubuntu官方中国的源列表。

最后重启主机,sudo reboot

root用户

为了避免权限问题,建议切换到root用户进行操作(否则要加很多sudo)。
sudo -i

环境

在安装openstack之前,需要先安装好必须的环境,包括:

  • Security
  • Host networking
  • Network Time Protocol (NTP)
  • OpenStack packages
  • SQL database
  • Message queue
  • Memcached
  • Etcd

安装方法参考Environment

Security

OpenStack服务支持各种安全方法,包括密码,策略和加密。

本节没有什么安装操作,过。

Host networking

在选择部署的体系结构的每个节点上安装操作系统后,必须配置网络接口。openstack官方建议禁用任何自动网络管理工具,并手动编辑网络配置文件。

本文准备工作中已经配置好了IP,过。

NTP

NTP服务主要用来各节点之间同步时间。

控制节点

1、安装chrony
apt -y install chrony

2、配置chrony
vim /etc/chrony/chrony.conf

取消两处注释:

1
2
allow 0/0
allow ::/0

3、重启chrony
service chrony restart

计算节点

1、安装chrony
apt -y install chrony

2、配置chrony
vim /etc/chrony/chrony.conf
注释修改如下:

1
2
#pool 2.debian.pool.ntp.org offline iburst
server controller iburst

3、重启chrony
service chrony restart

验证安装

官方建议在继续操作之前验证NTP同步。某些节点,尤其是那些引用控制器节点的节点,可能需要几分钟才能同步。
1、在控制节点执行
chronyc sources

Name/IP”列中的内容表示NTP服务器的主机名或IP地址。MS列中的内容,*代表当前NTP服务器同步成功。

2、在计算节点执行
chronyc sources

“Name/IP”列中的内容应该表示控制器节点的主机名。

OpenStack packages

由于发布计划不同,发行版将OpenStack软件包作为发行版的一部分或使用其他方法发布。在所有节点上执行这些操作。

1、安装openstack queens仓库
apt install software-properties-common

add-apt-repository cloud-archive:queens

2、更新软件包
apt update && apt dist-upgrade

3、安装openstack-client
apt -y install python-openstackclient

SQL database

大多数OpenStack服务使用SQL数据库来存储信息,数据库通常在控制器节点上运行。本文使用MariaDB(MySQL),OpenStack服务还支持其他SQL数据库,包括PostgreSQL。

1、安装mariadb和连接工具
apt -y install mariadb-server python-pymysql

2、编辑50-server.cnf
vim /etc/mysql/mariadb.conf.d/50-server.cnf

命令模式下输入:set nu显示行号:

1
2
3
4
5
# line 29: change
bind-address = 0.0.0.0
# line 105: change
character-set-server = utf8
#collation-server = utf8mb4_general_ci

3、重启mariadb
关闭mariadb,service mysql stop
然后查看netstat -an | grep 3306,确认3306已经关闭。

启动mariadb,service mysql start

4、设置mariadb密码
mysql_secure_installation

按照提示设置密码为openstack。如果设置后无法登录,那么参考MySQL重置密码

Message queue

OpenStack使用消息队列来协调服务之间的操作和状态信息。消息队列服务通常在控制器节点上运行。OpenStack支持多种消息队列服务,包括RabbitMQ,Qpid和ZeroMQ。这里我们安装RabbitMQ,因为大多数发行版都支持它。

1、安装rabbitmsq
apt -y install rabbitmq-server

2、创建openstack用户,密码为openstack
rabbitmqctl add_user openstack openstack

3、允许openstack用户配置和读写
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

Memcached

OpenStack的各个服务的身份认证服务使用Memcached缓存令牌。memcached服务通常在控制器节点上运行。对于生产部署,我们建议启用防火墙,身份验证和加密的组合来保护它。

1、安装memcached
apt -y install memcached python-memcache

2、编辑/etc/memcached.conf文件
-l 127.0.0.1修改为-l 0.0.0.0

3、重启memcached
service memcached restart

4、测试

1
2
3
telnet controller 11211
stats
quit

Etcd

OpenStack服务可能使用Etcd,它是一个可靠的分布式键值存储工具。用于分布式密钥锁定,存储配置,跟踪服务的实时性等。同样安装在控制节点即可。

1、安装etcd
apt -y install etcd

2、查看版本
etcd -version,这里看到是2.2.5。按照Etcd for Ubuntu文档配置的话,最终会失败,所以,我们换一种配置方法。

3、查看服务状态
etcdctl member list

应该会看到:

1
ce2a822cea30bfca: name=controller peerURLs=http://localhost:2380,http://localhost:7001 clientURLs=http://localhost:2379,http://localhost:4001

4、官方文档给出的/etc/etcd/etcd.conf.yml文件内容为:

1
2
3
4
5
6
7
8
9
name: controller
data-dir: /var/lib/etcd
initial-cluster-state: 'new'
initial-cluster-token: 'etcd-cluster-01'
initial-cluster: controller=http://controller:2380
initial-advertise-peer-urls: http://controller:2380
advertise-client-urls: http://controller:2379
listen-peer-urls: http://0.0.0.0:2380
listen-client-urls: http://controller:2379

参考etcd.conf.yml,我们在/etc/default/etcd的最后添加:

1
2
3
4
5
6
7
8
9
ETCD_NAME="controller"
ETCD_DATA_DIR="/var/lib/etcd/default"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER="controller=http://controller:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://controller:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://controller:2379,http://127.0.0.1:2379"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://controller:2379,http://127.0.0.1:2379"

5、设置开机启动
systemctl enable etcd

6、重启etcd
systemctl restart etcd

7、查看服务状态
etcdctl member list

会看到发生了变化:

1
ce2a822cea30bfca: name=controller peerURLs=http://localhost:2380,http://localhost:7001 clientURLs=http://127.0.0.1:2379,http://controller:2379

8、在控制节点和计算节点测试
curl http://controller:2379/v2/stats/leader

可以看到:

1
{"leader":"ce2a822cea30bfca","followers":{}}

后记

如果修改了/etc/hosts中的controller对应的IP,那么需要重启memcached和etcd,因为它们的配置中使用了主机名而不是IP。

最新文章

  1. IOS开发基础知识--碎片7
  2. linux配置网卡绑定
  3. 开个坑, 写个阿里云开放储存服务(OSS)的C++版SDK以及客户端
  4. MYSQL数据库自动本地/异地双备份/MYSQL增量备份
  5. JAVA XMLConfiguration解决StringXML及多节点
  6. Ubuntu系统使用技巧
  7. Qt使用AES加密算法对字符串进行加密
  8. js实现页面时钟
  9. js中的sort方法
  10. Bootstrap的js插件之按钮(button)
  11. centos 系统时间的同步
  12. TZOJ 2569 Wooden Fence(凸包求周长)
  13. Linux vim常见使用详解
  14. 深入理解 Node.js 中 EventEmitter源码分析(3.0.0版本)
  15. 指令创建 Express Node.js 项目
  16. 快速定位 Android APP 当前页面的三种方法(Activity / Fragment)
  17. Linux学习笔记之在 CentOS 里下载 RPM 包及其所有依赖包
  18. Mysql binlog日志的介绍
  19. .net 基于Jenkins的自动构建系统开发
  20. Solr4.6删除数据的办法

热门文章

  1. 【2016常州一中夏令营Day6】
  2. IdentityServer4 Resources
  3. codeforces 1167B Lost Numbers
  4. 【转】Elasticsearch学习笔记
  5. Qt StyleSheet皮肤css源码(黑色,超详细) 乌合之众 good
  6. python简单小程序
  7. ssh 简写
  8. JVM 体系结构与工作方式
  9. jeecg中自定义按钮时遇到的问题
  10. ansible批量部署mysql