0%

ops-install-service-openstack_keystone

Openstack – yoga 版本部署

https://www.ngui.cc/el/819132.html?action=onClick

架构组件

全局组件

  • keystone: 身份认证服务,提供认证、管理全局权限、认证和授权的组件
  • Ceilometer: 计量、监控服务,监控整个集群架构状态的租金啊
  • Horizon: 控制面板服务,可以使用 openstack 架构中的所有功能

核心组件

  • Nova(计算服务)
  • Glance(镜像服务)
  • Neutron(网络服务)
  • Swift(对象存储服务)
  • Cinder(块存储服务) 由nova将资源收集整合,统一提供给虚拟机 如果要添加其他一些功能,关联,调用一些功能组件的API或者把功能对应的API暴露出来后,供给其它组件去对接,调用(openstack的灵活性)

辅助、其他组件

  • Ironic:裸金属(裸机)提供基本的硬件资源

  • Trove:数据库,管理数据库的服务(关系,非关系);存储openstack实例数据,各组件之间调用,使用情况;日志文件

  • Heat、Sahara:对数据进行分析,编排,处理,精细化管理

  • 计算服务

  • 存储服务

  • 网络服务

  • 权限服务

  • 镜像服务

  • 接口服务

  • 控制平台服务

  • 云管理服务

  • 密码

    • db
      • root pH822Q4@ht%3v6^3
      • glance h45A7i95Tnn8FaXV6xCA
      • placement ibbX2f5S7Jvs5469p3En
      • nova ANq8ycYi89y23am9J3uX
      • cinder G2S2e8ie7co9L666m2Kh
      • dash kSh7L92ua39VmrKNK2n2
      • keystone 6yX9nE2zC9y8AUo5GR5K
      • neutron ERq3W6mjCA4r8J3778oC
    • keystone
      • admin 622oFdb9ncj56fA3
    • rabbitmq
      • openstack or68W8dPkV4Bp5Crx7Ca
    • openstack-user
      • admin yDri3!259R3RW$M8
      • common_user g34*p3vWN!b2u2Z8
      • glance 5s2&rV83KfZ29qG7
      • placement 5M52SRZc8k4Bv&32
      • nova MG%5ff253v44hfS3
      • neutron $63@3KcV88PK36v4
      • cinder 2v%BJQ53gPhG842V
      • demo D3P#2&Er7869ou6P
      • rabbit 64SvH4D7$4e5xR5M
    • other
      • metadat_secret AS6sgjFE66W4327j27r2

环境要求

额外网卡通过虚拟网卡实现,模拟私有子网

  • 核心组件

    • controller – 2C/8GB/100GB/2Nic
    • compute – 4C/8GB/100GB/2Nic
  • 可选组件

    • block storage – 1C/4GB/100GB(数据盘独立)/1Nic
    • object storage – 1C/4GB/100GB(数据盘独立)/1Nic

运行服务

  • controller

    • 认证服务 – keystone(port:)
    • 镜像服务 – glance(port:)
    • 时间同步服务 – chrony(port:)
    • 数据库服务 – mariadb(port:)
    • 前端展示服务 – dashboard(port:)
    • 消息队列服务 – memcached(port:)
    • 计算服务 – nova-api nova-conductor nova-novncproxy nova-scheduler
  • compute *

  • block storage

    • 文件共享服务
  • object storage

网络规划

  • controller 10.0.0.11
  • compute 10.0.0.21
  • block-storage 10.0.0.31
  • object-storage 10.0.0.41

服务部署

在 Ubuntu 20.04 上部署 yoga 版本,使用 root 用户进行部署

基本配置

  • 安装 net-tools

    1
    apt install -y net-tools
  • 配置虚拟网卡

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # 增加虚拟网卡
    cat >> /lib/systemd/system/rc-local.service << EOF
    [Install]
    WantedBy=multi-user.target
    EOF

    # 重载 systemctl
    systemctl daemon-reload
    # 配置虚拟网卡,
    cat >> /etc/rc.local << EOF
    #!/bin/bash
    ifconfig ens160:1 10.0.0.11 netmask 255.255.255.0 up
    EOF

    # 修改文件权限
    chmod +x /etc/rc.local

    # 启动服务
    systemctl enable --now rc-local.service
  • 修改hosts

    1
    2
    3
    4
    5
    6
    cat >> /etc/hosts << EOF
    # controller
    10.0.0.11 controller
    # compute
    10.0.0.21 compute
    EOF
  • 添加源

    1
    add-apt-repository cloud-archive:yoga
  • 安装客户端

    1
    apt install -y python3-openstackclient

controller 服务部署

第三方服务部署

  • 安装 chrony 服务

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # 安装
    apt install -y chrony

    # 使用阿里云 ntp 服务
    cat >> /etc/chrony/chrony.conf << EOF
    server ntp.aliyun.com iburst
    allow 10.0.0.0/24
    EOF

    # 其他服务节点
    # 安装 chrony
    # 使用 controller 为ntp server
    # cat >> /etc/chrony/chrony.conf << EOF
    # server controller iburst
    # EOF

    # 重启服务
    systemctl restart chrony
  • 安装 mariadb

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    # 安装
    apt install -y mariadb-server python3-pymysql
    # 配置
    cat >> /etc/mysql/mariadb.conf.d/99-openstack.cnf <<EOF
    [mysqld]
    bind-address = 10.0.0.11

    default-storage-engine = innodb
    innodb_file_per_table = on
    max_connections = 4096
    collation-server = utf8_general_ci
    character-set-server = utf8
    EOF

    # 重启
    systemctl restart mysql

    # 设置 root<数据库> 用户密码
    mysql_secure_installation

    # 修改 root 密码(localhost)
    mysql -u root -p
    1
    2
    3
    use mysql;
    set password for 'root'@'localhost' = password('root_dbpass');
    flush privileges;
  • 安装 rabbitmq

    1
    2
    3
    4
    5
    6
    7
    8
    # 安装
    apt install -y rabbitmq-server

    # 添加 openstack
    rabbitmqctl add_user openstack

    # 赋予权限
    rabbitmqctl set_permissions openstack ".*" ".*" ".*"
  • 安装 memcached

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 安装
    apt install -y memcached python3-memcache

    # 配置
    cat >> /etc/memcached.conf <<EOF
    -l 10.0.0.11
    EOF

    # 重启
    systemctl restart memcached
  • 安装 etcd

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # 安装
    apt install -y etcd

    # 配置
    cat >> /etc/default/etcd <<EOF
    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://10.0.0.11:2380"
    ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.11:2380"
    ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"
    ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
    ETCD_LISTEN_CLIENT_URLS="http://10.0.0.11:2379"
    EOF

    # 重启
    systemctl enable --now etcd

安装 keystone 服务

  • 数据库管理

    1
    2
    # mysql 创建库及配置 keystone 数据库用户权限
    mysql -u root -p
    1
    2
    create database keystone;
    grant all on keystone.* to 'keystone'@'%' identified by 'keystone_dbpass';
  • 安装 keystone

    1
    2
    3
    4
    5
    # 安装
    apt install -y keystone

    # 配置
    vim /etc/keystone/keystone.conf
    1
    2
    3
    4
    5
    [database]
    connection = mysql+pymysql://keystone:keystone_dbpass@controller/keystone
    ...
    [receipt]
    provider = fernet
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 初始化数据
    su -s /bin/bash -c "keystone-manage db_sync" keystone

    # 初始化 key 仓库
    keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
    keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

    # 启动服务,注意替换 ADMIN_PASS
    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

  • 修改 apache

    1
    2
    3
    4
    5
    6
    cat >> /etc/apache2/apache2.conf <<EOF
    ServerName controller
    EOF

    # 重启
    systemctl restart apache2
配置 keystone
  • 创建环境变量

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    # 创建目录
    mkdir -p /opt/data/openstack/

    # 设置环境变量 admin
    cat >> /opt/data/openstack/admin_openrc <<EOF
    unset OS_AUTH_URL
    unset OS_PASSWORD
    export OS_PROJECT_DOMAIN_NAME=Default
    export OS_USER_DOMAIN_NAME=Default
    export OS_PROJECT_NAME=admin
    export OS_USERNAME=admin
    export OS_PASSWORD=ADMIN_PASS
    export OS_AUTH_URL=http://controller:5000/v3
    export OS_IDENTITY_API_VERSION=3
    export OS_IMAGE_API_VERSION=2
    EOF

    # 设置环境变量 common
    cat >> /opt/data/openstack/common_openrc <<EOF
    unset OS_AUTH_URL
    unset OS_PASSWORD

    export OS_PROJECT_DOMAIN_NAME=Default
    export OS_USER_DOMAIN_NAME=Default
    export OS_PROJECT_NAME=myproject
    export OS_USERNAME=myuser
    export OS_PASSWORD=DEMO_PASS
    export OS_AUTH_URL=http://controller:5000/v3
    export OS_IDENTITY_API_VERSION=3
    export OS_IMAGE_API_VERSION=2
    EOF

    # 赋予执行权限
    chmod +x /opt/data/openstack/admin_openrc /opt/data/openstack/common_openrc
  • 创建 project 和 用户

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # 引用环境变量
    source /opt/data/openstack/admin_openrc

    # 创建 admin project
    openstack project create --domain default \
    --description "Service Project" service

    # 创建非 admin project
    openstack project create --domain default \
    --description "Common Project" common_project

    # 创建普通用户
    openstack user create --domain default \
    --password-prompt common_user

    # 创建普通角色
    openstack role create common_role

    # 关联用户角色
    openstack role add --project common_project --user common_user common_role
  • 验证部署

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # 引用环境变量
    source /opt/data/openstack/admin_openrc

    # 创建 admin issue
    openstack --os-auth-url http://controller:5000/v3 \
    --os-project-domain-name Default --os-user-domain-name Default \
    --os-project-name admin --os-username admin token issue

    # 创建 common issue
    openstack --os-auth-url http://controller:5000/v3 \
    --os-project-domain-name Default --os-user-domain-name Default \
    --os-project-name common_project --os-username common_user token issue

    # 查看
    openstack token issue