zoukankan      html  css  js  c++  java
  • B06-openstack高可用(t版)-keystone集群部署

    1. 创建keystone数据库

    [root@controller01 ~]# mysql -uroot -phuayun
    MariaDB [(none)]> CREATE DATABASE keystone;
    Query OK, 1 row affected (0.018 sec)

    MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'huayun';
    Query OK, 0 rows affected (0.007 sec)

    MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'huayun';
    Query OK, 0 rows affected (0.003 sec)

    MariaDB [(none)]> flush privileges;
    Query OK, 0 rows affected (0.006 sec)

    MariaDB [(none)]> exit
    Bye


    2:安装keystone的相关软件包

    [root@controller01 ~]# yum install openstack-keystone httpd mod_wsgi mod_ssl -y

    3. 配置keystone.conf(标红的即为修改的地方)

    [root@controller01 ~]# cp /etc/keystone/keystone.conf /etc/keystone/keystone.conf.back

    [root@controller01 ~]# egrep -v "^#|^$" /etc/keystone/keystone.conf
    [DEFAULT]
    [application_credential]
    [assignment]
    [auth]
    [cache]
    backend = oslo_cache.memcache_pool
    enabled = true
    memcache_servers = 10.100.214.201:11211,10.100.214.202:11211,10.100.214.203:11211
    [catalog]
    [cors]
    [credential]
    [database]
    connection = mysql+pymysql://keystone:huayun@10.100.214.200/keystone
    [domain_config]
    [endpoint_filter]
    [endpoint_policy]
    [eventlet_server]
    [federation]
    [fernet_receipts]
    [fernet_tokens]
    [healthcheck]
    [identity]
    [identity_mapping]
    [jwt_tokens]
    [ldap]
    [memcache]
    [oauth1]
    [oslo_messaging_amqp]
    [oslo_messaging_kafka]
    [oslo_messaging_notifications]
    [oslo_messaging_rabbit]
    [oslo_middleware]
    [oslo_policy]
    [policy]
    [profiler]
    [receipt]
    [resource]
    [revoke]
    [role]
    [saml]
    [security_compliance]
    [shadow_users]
    [token]
    provider = fernet
    [tokenless_auth]
    [totp]
    [trust]
    [unified_limit]
    [wsgi]
    [root@controller01 ~]#

    将配置文件拷贝到另外两个节点:

    [root@controller01 ~]# scp /etc/keystone/keystone.conf 10.100.214.202:/etc/keystone/keystone.conf
    [root@controller01 ~]# scp /etc/keystone/keystone.conf 10.100.214.203:/etc/keystone/keystone.conf

    4. 同步keystone数据库

    在任意一个节点上操作就可以

    [root@controller01 ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone

    检测数据库同步

    [root@controller01 ~]# mysql -uroot -phuayun  keystone  -e "show  tables";

    5. 初始化fernet秘钥

    [root@controller01 ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
    [root@controller01 ~]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

    并将初始化的密钥拷贝到其他的控制节点:

    [root@controller01 ~]# scp -r /etc/keystone/fernet-keys/ /etc/keystone/credential-keys/ root@10.100.214.202:/etc/keystone/
    [root@controller01 ~]# scp -r /etc/keystone/fernet-keys/ /etc/keystone/credential-keys/ root@10.100.214.203:/etc/keystone/

    同步后注意另外两台控制节点fernet的权限

    [root@controller02 ~]# chown keystone:keystone /etc/keystone/credential-keys/ -R
    [root@controller02 ~]# chown keystone:keystone /etc/keystone/fernet-keys/ -R

    [root@controller03 ~]# chown keystone:keystone /etc/keystone/credential-keys/ -R
    [root@controller03 ~]# chown keystone:keystone /etc/keystone/fernet-keys/ -R

    认证引导

    # 任意控制节点操作;
    # 初始化admin用户(管理用户)与密码,3种api端点,服务实体可用区等

    [root@controller02 ~]# keystone-manage bootstrap --bootstrap-password huayun  --bootstrap-admin-url http://10.100.214.200:5000/v3/   --bootstrap-internal-url http://10.100.214.200:5000/v3/   --bootstrap-public-url http://10.100.214.200:5000/v3/   --bootstrap-region-id RegionOne

    配置Apache HTTP服务器

    1.  配置httpd.conf

    [root@controller01 ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak

    [root@controller01 ~]# sed -i "s/#ServerName www.example.com:80/ServerName ${HOSTNAME}/" /etc/httpd/conf/httpd.conf
    [root@controller01 ~]# sed -i "s/Listen 80/Listen 10.100.214.201:80/g" /etc/httpd/conf/httpd.conf

    [root@controller02 ~]# sed -i "s/#ServerName www.example.com:80/ServerName ${HOSTNAME}/" /etc/httpd/conf/httpd.conf
    [root@controller02 ~]# sed -i "s/Listen 80/Listen 10.100.214.202:80/g" /etc/httpd/conf/httpd.conf

    [root@controller03 ~]# sed -i "s/#ServerName www.example.com:80/ServerName ${HOSTNAME}/" /etc/httpd/conf/httpd.conf
    [root@controller03 ~]# sed -i "s/Listen 80/Listen 10.100.214.203:80/g" /etc/httpd/conf/httpd.conf

    2. 配置wsgi-keystone.conf

    [root@controller01 ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

    [root@controller01 ~]# sed -i "s/Listen 5000/Listen 10.100.214.201:5000/g" /etc/httpd/conf.d/wsgi-keystone.conf
    [root@controller01 ~]# sed -i "s/*:5000/10.100.214.201:5000/g" /etc/httpd/conf.d/wsgi-keystone.conf

    [root@controller02 ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

    [root@controller02 ~]# sed -i "s/Listen 5000/Listen 10.100.214.202:5000/g" /etc/httpd/conf.d/wsgi-keystone.conf
    [root@controller02 ~]# sed -i "s/*:5000/10.100.214.202:5000/g" /etc/httpd/conf.d/wsgi-keystone.conf

    [root@controller03 ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

    [root@controller03 ~]# sed -i "s/Listen 5000/Listen 10.100.214.203:5000/g" /etc/httpd/conf.d/wsgi-keystone.conf

    [root@controller03 ~]# sed -i "s/*:5000/10.100.214.203:5000/g" /etc/httpd/conf.d/wsgi-keystone.conf

    3. 启动服务(所有控制节点)

    [root@controller01 ~]# systemctl enable httpd.service && systemctl restart httpd.service
    Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

    4:设置openstack的环境变量

    # openstack client环境脚本定义client调用openstack api环境变量,以方便api的调用(不必在命令行中携带环境变量);
    # 根据不同的用户角色,需要定义不同的脚本;
    # 这里以“认证引导”章节定义的admin用户为例,设置其环境脚本,再根据需要分发到需要运行openstack client工具的节点;
    # 一般将脚本创建在用户主目录

    [root@controller01 ~]# vim admin-openrc

    export OS_USERNAME=admin
    export OS_PASSWORD=huayun
    export OS_PROJECT_NAME=admin
    export OS_USER_DOMAIN_NAME=Default
    export OS_PROJECT_DOMAIN_NAME=Default
    export OS_AUTH_URL=http://10.100.214.200:5000/v3
    export OS_IDENTITY_API_VERSION=3

    [root@controller01 ~]# source admin-openrc

    [root@controller01 ~]# scp admin-openrc 10.100.214.202:/root/
    [root@controller01 ~]# scp admin-openrc 10.100.214.203:/root/

    创建域、项目、用户和角色

    1:创建域:

    # projrct/user等基于domain存在;(所以不需要在创建default域)
    # 在”认证引导”章节中,初始化admin用户即生成”default” domain

    [root@controllervip ~]# openstack domain list
    +---------+---------+---------+--------------------+
    | ID | Name | Enabled | Description |
    +---------+---------+---------+--------------------+
    | default | Default | True | The default domain |
    +---------+---------+---------+--------------------+

    2:创建admin项目(已经存在也不需要创建)

    [root@controller01 ~]# openstack project list
    +----------------------------------+---------+
    | ID | Name |
    +----------------------------------+---------+
    | 8152877d890d4727ac6f01a94e67ae15 | admin |

     3:创建admin用户(本身已经存在不需要在创建)

    [root@controller01 ~]# openstack user list
    +----------------------------------+-------+
    | ID | Name |
    +----------------------------------+-------+
    | 7bb860340a384300bc6b793cd23cbbde | admin |
    +----------------------------------+-------+

    由于admin的项目角色用户都已经存在我们重新创建一个新的项目角色

    创建example域:

    [root@controller01 ~]# openstack domain create --description "An Example Domain" example
    +-------------+----------------------------------+
    | Field | Value |
    +-------------+----------------------------------+
    | description | An Example Domain |
    | enabled | True |
    | id | 04f35483319e49939f25a402238f7136 |
    | name | example |
    | options | {} |
    | tags | [] |
    +-------------+----------------------------------+

    创建demo项目:

    [root@controller01 ~]# openstack project create --domain default --description "Demo Project" demo

    ‘+-------------+----------------------------------+

    | Field | Value |
    +-------------+----------------------------------+
    | description | Demo Project |
    | domain_id | default |
    | enabled | True |
    | id | b701f4bd7da049d4a72699de3068bb75 |
    | is_domain | False |
    | name | demo |
    | options | {} |
    | parent_id | default |
    | tags | [] |
    +-------------+----------------------------------+

    创建demo用户

    [root@controller01 ~]# openstack user create --domain default --password=huayun demo
    +---------------------+----------------------------------+
    | Field | Value |
    +---------------------+----------------------------------+
    | domain_id | default |
    | enabled | True |
    | id | e3755b60ba544e548e37b0fd88842e7b |
    | name | demo |
    | options | {} |
    | password_expires_at | None |
    +---------------------+----------------------------------+

    创建普通用户角色

    [root@controller01 ~]# openstack role create user
    +-------------+----------------------------------+
    | Field | Value |
    +-------------+----------------------------------+
    | description | None |
    | domain_id | None |
    | id | feca55a6132c43d99440b015095f8e0c |
    | name | user |
    | options | {} |
    +-------------+----------------------------------+

    [root@controller01 ~]# openstack role list
    +----------------------------------+--------+
    | ID | Name |
    +----------------------------------+--------+
    | 0fe64879f5434a608bf94bfb37027d24 | admin |
    | 874e55cac61947aa9c6e1b586a819538 | reader |
    | b4d0e9f90bfa459ea014b851af9159bd | member |
    | feca55a6132c43d99440b015095f8e0c | user |
    +----------------------------------+--------+

    给demo分配普通用户角色

    [root@controller01 ~]# openstack role add --project demo --user demo user

    查看权限分配

     配置demo的环境变量

    vim demo-openrc

    export OS_PROJECT_DOMAIN_NAME=Default
    export OS_USER_DOMAIN_NAME=Default
    export OS_PROJECT_NAME=demo
    export OS_USERNAME=demo
    export OS_PASSWORD=huayun
    export OS_AUTH_URL=http://10.100.214.200:5000/v3
    export OS_IDENTITY_API_VERSION=3

    source demo-openrc

    分发给其他脚本

    [root@controller01 ~]# scp demo-openrc 10.100.214.202:/root/
    [root@controller01 ~]# scp demo-openrc 10.100.214.203:/root/

    设置pcs资源

    # 在任意控制节点操作;
    # 添加资源openstack-keystone-clone;
    # pcs实际控制的是各节点system unit控制的httpd服务

    [root@controller01 ~]# pcs resource create openstack-keystone systemd:httpd --clone interleave=true
    [root@controller01 ~]# pcs resource
    vip (ocf::heartbeat:IPaddr2): Started controller01
    Clone Set: lb-haproxy-clone [lb-haproxy]
    Started: [ controller01 ]
    Stopped: [ controller02 controller03 ]
    Clone Set: openstack-keystone-clone [openstack-keystone]
    Started: [ controller01 controller02 controller03 ]

  • 相关阅读:
    vue 仿IOS 滚轮选择器
    一道题目学ES6 API,合并对象id相同的两个数组对象
    Express中间件原理详解
    webpack原理与实战
    LS522 体积小低电压低成本的13.56MHz非接触式读写卡芯片,集成了在13.56MHz下所有类型的被动非接触式通信方式和协议,支持ISO14443A/B的多层应用( PIN对PIN MFRC522 )
    SP213EEA-L/TR +5V高性能RS232收发器
    多速率SDI集成接收器 SDI解码芯片 GS2971A-IBE3
    低电容3.3V TVS管 R CLAMP3304N.TCT
    高ESD耐压/TVS二极管 UCLAMP2804L.TCT
    高性能正电压稳压管SC4215HSETRT
  • 原文地址:https://www.cnblogs.com/zhaopei123/p/13091897.html
Copyright © 2011-2022 走看看