zoukankan      html  css  js  c++  java
  • Ubuntu16手动安装OpenStack

    记录大佬的博客全文转载于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。

  • 相关阅读:
    添加egit插件
    Git使用教程
    mysql set names 命令和 mysql字符编码问题
    git常用命令
    前端WEB编辑器-------webstrom
    maven 常见错误解决方法
    java -jar 执行 eclipse export 的 jar 包报错处理
    数据库(DBUtils)
    数据库(JDBC、DBUtils)
    rabbitmq Exchange四种模式
  • 原文地址:https://www.cnblogs.com/loufangcheng/p/11727032.html
Copyright © 2011-2022 走看看