热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HA高可用_OpenStackMitakaHA高可用搭建

本文由编程笔记#小编为大家整理,主要介绍了OpenStackMitakaHA高可用搭建相关的知识,希望对你有一定的参考价值。OpenStackMitakaHA高可用搭建
本文由编程笔记#小编为大家整理,主要介绍了OpenStack Mitaka HA高可用搭建相关的知识,希望对你有一定的参考价值。


OpenStack Mitaka HA高可用搭建mini试看版
version 1.0
环境虚拟机列表:
10.1.1.120 controller1 controller1.test.com
10.1.1.121 controller2 controller2.test.com
10.1.1.122 controller3 controller3.test.com
10.1.1.133 compute1 compute1.test.com
10.1.1.134 glance-backend backend.test.com
10.1.1.135 cinder1 cinder1.test.com
9.110.187.128 demo.openstack.com
网络配置:
public : 9.110.187.0/24
admin : 10.1.1.0/24
private:10.2.2.0/24
mapping network port:eno67109408
一、 搭建Mariadb Galera Cluster



  1. Mariadb Galera Cluster集群介绍
    Mariadb Galera Cluster是mysql高可用性和可扩展性的解决方案
    官网:http://galeracluster.com/products/
    MariaDB Galera Cluster 是一套在mysql innodb存储引擎上面实现multi-master及数据实时同步的系统架构,业务层面无需做读写分
    离工作,数据库读写压力都能按照既定的规则分发到 各个节点上去。在数据方面完全兼容 MariaDB 和 MySQL。
    特性:
    (1).同步复制 Synchronous replication
    (2).Active-active multi-master 拓扑逻辑
    (3).可对集群中任一节点进行数据读写
    (4).自动成员控制,故障节点自动从集群中移除
    (5).自动节点加入
    (6).真正并行的复制,基于行级
    (7).直接客户端连接,原生的 MySQL 接口
    (8).每个节点都包含完整的数据副本
    (9).多台数据库中数据同步由 wsrep 接口实现
    缺点:
    (1).目前的复制仅仅支持InnoDB存储引擎,任何写入其他引擎的表,包括mysql.*表将不会复制,但是DDL语句会被复制的,因此创建用户将会
    被复制,但是insert into mysql.user…将不会被复制的.
    (2).DELETE操作不支持没有主键的表,没有主键的表在不同的节点顺序将不同,如果执行SELECT…LIMIT… 将出现不同的结果集.
    (3).在多主环境下LOCK/UNLOCK TABLES不支持,以及锁函数GET_LOCK(), RELEASE_LOCK()…
    (4).查询日志不能保存在表中。如果开启查询日志,只能保存到文件中。
    (5).允许最大的事务大小由wsrep_max_ws_rows和wsrep_max_ws_size定义。任何大型操作将被拒绝。如大型的LOAD DATA操作。
    (6).由于集群是乐观的并发控制,事务commit可能在该阶段中止。如果有两个事务向在集群中不同的节点向同一行写入并提交,失败的节
    点将中止。对 于集群级别的中止,集群返回死锁错误代码(Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)).
    (7).XA事务不支持,由于在提交上可能回滚。
    (8).整个集群的写入吞吐量是由最弱的节点限制,如果有一个节点变得缓慢,那么整个集群将是缓慢的。为了稳定的高性能要求,所有的
    节点应使用统一的硬件。
    (9).集群节点建议最少3个。
    (10).如果DDL语句有问题将破坏集群。
    架构图:

  2. 配置Mariadb Galera官方源地址
    在三个node上分别执行下面的操作,目的是安装Galera。
    在/etc/yum.repos.d下创建一个repo文件
    vim /etc/yum.repos.d/mariadb.repo

    添加:
    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.1/centos7-amd64
    enabled=1
    gpgcheck=0


  3. 安装Mariadb Galera
    在三个node上分别执行:
    yum install -y MariaDB-server MariaDB-client galera xinetd rsync ntpdate
    systemctl start mariadb.service

    .......


  4. 配置 MariaDB Cluster集群
    第一个节点上,添加内容如下:
    vim /etc/my.cnf.d/client.cnf

    添加内容:
    [client]
    port = 3306
    .......


    vim /etc/my.cnf.d/server.cnf

    添加内容:
    [isamchk]
    key_buffer_size = 16M # key_buffer_size这个参数是用来设置索引块(index blocks)缓存的大小,它被所有线程共享,严格说是
    它决定了数据库索引处理的速度,尤其是索引读的速度
    [mysqld]
    binlog_format=ROW #该参数可以有三种设置值:row、statement和mixed。row代表二进制日志中记录数据表每一行经过写操作
    后被修改的最终值。各个参与同步的Salve节点,也会参照这个最终值,将自己数据表上的数据进行修改;statement形式是在日志中记录
    数据操作过程,而非最终的执行结果。各个参与同步的Salve节点会解析这个过程,并形成最终记录;mixed设置值,是以上两种记录方
    式的混合体,MySQL服务会自动选择当前运行状态下最适合的日志记录方式。
    character-set-server = utf8 #设置数据库的字符集
    collation-server = utf8_general_ci
    max_allowed_packet = 256M # 设置mysql接收数据包最大值,比如你执行的sql语句过大,可能会执行失败,这个参数就是让能
    执行的sql语句大小调高
    max_cOnnections= 10000 # 设置mysql集群最大的connection连接数,这个在openstack环境里非常重要
    ignore-db-dirs = lost+found # 设置忽略把lost+found当做数据目录
    init-cOnnect= SET NAMES utf8 # 设置初始化字符集编码(仅对非超级用户有效)
    innodb_autoinc_lock_mode = 2 #这种模式下任何类型的inserts都不会采用AUTO-INC锁,性能最好,但是在同一条语句内部产生
    auto_increment值间隙。
    innodb_buffer_pool_size = 2000M #设置缓冲池字节大小,InnoDB缓存表和索引数据的内存区域;这个值设置的越大,在不止一次
    的访问相同的数据表数据时,消耗的磁盘I / O就越少。在一个专用的数据库服务器,则可能将其设置为高达80%的机器物理内存大小。不
    过在实际的测试中,发现无限的增大这个值,带来的性能提升也并不显著,对CPU的压力反而增大,设置合理的值才是最优。
    innodb_doublewrite = 0 #设置0是禁用doublewrite,一般在不关心数据一致性(比如使用了RAID0)或文件系统可以保证不会出现
    部分写失效,你可以通过将innodb_doublewrite参数设置为0还禁用doublewrite。
    innodb_file_format = Barracuda #设置文件格式为Barracuda,Barracude是innodb-plugin后引入的文件格式,同时
    Barracude也支持Antelope文件格式,Barracude在数据压缩上优于Antelope,配合下面的innodb_file_per_table=1使用
    innodb_file_per_table = 1 #开启独立的表空间,使每个 Innodb的表,有自已独立的表空间。如删除文件后可以回收那部分空间。
    .......
    [galera]
    bind-address=10.1.1.120 # mysql服务绑定的IP
    wsrep_provider = /usr/lib64/galera/libgalera_smm.so
    wsrep_cluster_address = "gcomm://10.1.1.120,10.1.1.121,10.1.1.122" #gcomm是特殊的地址,仅仅是Galera cluster初始化启动时
    候使用
    .......
    [mysqld_safe]
    nice = 0 # 调用系统的nice命令设置进程优先级,linux系统的普通用户只能在0-19中设置,mysql用户为普通用户,设置为0 应该就是
    让mysql进程优先级最高了。
    .......
    [mysqldump]
    max_allowed_packet = 16M # MySQL根据配置文件会限制Server接受的数据包大小。有时候大的插入和更新会受
    max_allowed_packet 参数限制,导致写入或者更新失败。
    quick # 强制 mysqldump 从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中
    quote-names #使用()引起表和列名。默认为打开状态,使用--skip-quote-names取消该选项。
    第二个和第三个节点的my.cnf配置如下,注意改下相关IP和节点名称:


    vim /etc/my.cnf.d/client.cnf

    [client]
    port = 3306
    socket = /var/lib/mysql/mysql.sock
    .......
    [mysqld]
    binlog_format=ROW
    character-set-server = utf8
    collation-server = utf8_general_ci
    max_allowed_packet = 256M
    max_cOnnections= 10000
    .......
    innodb_autoinc_lock_mode = 2
    innodb_buffer_pool_size = 2000M
    innodb_doublewrite = 0
    .......
    [galera]
    bind-address = 10.1.1.121
    wsrep_provider = /usr/lib64/galera/libgalera_smm.so
    wsrep_cluster_address = "gcomm://10.1.1.120,10.1.1.121,10.1.1.122"
    .......
    [mysqld_safe]
    nice = 0
    .......
    vim mysql-clients.cnf:
    [mysqldump]
    max_allowed_packet = 16M
    .......


  5. 设置mysql最大连接数
    修改完server.cnf,然后后修改下mysql.service文件,让数据库最大支持连接数调整到10000(这样做是很有用的,笔者在维护
    openstack环境中,在VM数量比较大负载较高的时候,经常出现因为数据库连接数不够导致访问界面出现各种内容刷不出的情况)
    .......
    都修改完毕后,执行systemctl daemon-reload
    最等启动了mariadb服务就能通过show variables like ‘max_connections‘; 可查看当前连接数值

  6. 关于mysql服务的启动顺序
    三个节点my.cnf都配置完成后,全部执行systemctl stop mariadb.service && systemctl disable mariadb.service
    然后在第一个节点用下面的命令初始化启动mariadb集群服务
    /usr/sbin/mysqld --wsrep-new-cluster --user=root &

    .......


  7. 查看mariadb数据库集群状态
    mysql -uroot -p

    .......
    二、安装RabbitMQ Cluster集群


  8. 每个节点都安装erlang
    yum install -y erlang

    .......


  9. 每个节点都启动rabbitmq及设置开机启动
    systemctl enable rabbitmq-server.service
    systemctl restart rabbitmq-server.service
    systemctl status rabbitmq-server.service
    systemctl list-unit-files |grep rabbitmq-server.service

    .......
    7 .查看RabbitMQ插件


    /usr/lib/rabbitmq/bin/rabbitmq-plugins list

    .......


  10. 查看rabbitmq状态
    rabbitmqctl cluster_status

  11. 集群配置
    .......
    在controller1上操作:
    scp /var/lib/rabbitmq/.erlang.COOKIE controller2:/var/lib/rabbitmq/.erlang.COOKIE

    .......
    在controller2上操作:


    systemctl restart rabbitmq-server
    rabbitmqctl stop_app
    rabbitmqctl join_cluster --ram [email protected]
    rabbitmqctl start_app

    .......
    查看集群状态:


    rabbitmqctl cluster_status

  12. 集群管理
    如果遇到rabbitmq脑裂情况,按以下步骤操作,重新设置集群:
    登录没加入集群的节点:
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl start_app
    .......
    删除后执行systemctl restart rabbitmq-server rabbitmq服务一般能起来。

  13. RabbitMQ优化
    .......
    三、 安装Pacemaker
    三个ctr节点需要安装以下包:
    pacemaker
    pcs (CentOS or RHEL) or crmsh
    corosync
    fence-agents (CentOS or RHEL) or cluster-glue
    resource-agents
    添加一个network_ha-clustering_Stable的源:
    cd /etc/yum.repos.d
    vim ha-clustering.repo

    添加以下内容:
    [network_ha-clustering_Stable]
    name=Stable High Availability/Clustering packages (CentOS_CentOS-7)
    type=rpm-md
    .......
    gpgkey=http://download.opensuse.org/repositories/network:/haclustering:/
    Stable/CentOS_CentOS//repodata/repomd.xml.key


    yum install -y lvm2 cifs-utils quota psmisc
    yum install -y pcs pacemaker corosync fence-agents-all resource-agents

    .......


  14. 三个ctr节点都设置PCS服务开机启动
    systemctl enable pcsd
    systemctl enable corosync

    .......


  15. 设置密码,每个节点就需要设置,而且密码必须一样
    passwd hacluster

  16. 配置编写corosync.conf 文件
    vim /etc/corosync/corosync.conf

    添加以下内容:
    totem {
    version: 2
    secauth: off
    cluster_name: openstack-cluster
    transport: udpu
    }
    .......
    quorum {
    provider: corosync_votequorum
    }
    logging {
    to_logfile: yes
    logfile: /var/log/cluster/corosync.log
    to_syslog: yes
    }
    在ctr1节点上生成密钥:


    cd /etc/corosync/
    ssh-keygen -t rsa
    corosync-keygen
    chmod 400 authkey

    .......


  17. 设置集群相互验证, 在controller1上操作即可
    pcs cluster auth controller1 controller2 controller3 -u hacluster -p passw0rd --force

  18. 在controller1上创建并启动名为openstack-cluster的集群,其中controller1 controller2 controller3为集群成员:
    pcs cluster setup --force --name openstack-cluster controller1 controller2 controller3

  19. 设置集群自启动
    pcs cluster enable --all

    .......


  20. 通过crm设置VIP
    crm

    crm(live)# config
    crm(live)configure# primitive vip ocf:heartbeat:IPaddr2 params ip=9.110.187.128 cidr_netmask=24 nic=eno16777736 op .......
    四、 安装HAProxy


  21. 安装Haproxy
    在三个节点上分别安装HAProxy
    .......

  22. 跟rsyslog结合配置haproxy日志,在三个节点上都操作
    cd /etc/rsyslog.d/
    vim haproxy.conf

    添加:
    $ModLoad imudp
    $UDPServerRun 514
    $template Haproxy,"%rawmsg%
    "
    local0.=info -/var/log/haproxy.log;Haproxy
    local0.notice -/var/log/haproxy-status.log;Haproxy


    systemctl restart rsyslog.service
    systemctl status rsyslog.service

  23. 在三个节点上配置haproxy.cfg
    cd /etc/haproxy/
    mv haproxy.cfg haproxy.cfg.orig
    vim haproxy.cfg

    添加下面内容:
    global
    log 127.0.0.1 local0
    log 127.0.0.1 local1 notice
    maxconn 4096
    chroot /usr/share/haproxy
    user haproxy
    group haproxy
    daemon
    .......
    frontend stats-front
    bind *:8088
    mode http
    default_backend stats-back
    backend stats-back
    mode http
    balance source
    stats uri /haproxy/stats
    stats auth admin:passw0rd
    listen RabbitMQ-Server-Cluster
    bind 9.110.187.128:56720
    mode tcp
    balance roundrobin
    option tcpka
    server controller1 controller1:5672 check inter 5s rise 2 fall 3
    server controller2 controller2:5672 check inter 5s rise 2 fall 3
    server controller3 controller3:5672 check inter 5s rise 2 fall 3
    listen RabbitMQ-Web
    bind 9.110.187.128:15673
    mode tcp
    balance roundrobin
    option tcpka
    server controller1 controller1:15672 check inter 5s rise 2 fall 3
    server controller2 controller2:15672 check inter 5s rise 2 fall 3
    server controller3 controller3:15672 check inter 5s rise 2 fall 3
    .......
    listen nova_compute_api_cluster
    bind 9.110.187.128:8774
    balance source
    option tcpka
    option httpchk
    option tcplog
    server controller1 controller1:9774 check inter 2000 rise 2 fall 5
    server controller2 controller2:9774 check inter 2000 rise 2 fall 5
    server controller3 controller3:9774 check inter 2000 rise 2 fall 5
    listen nova_vncproxy_cluster
    bind 9.110.187.128:6080
    balance source
    option tcpka
    option tcplog
    server controller1 controller1:6080 check inter 2000 rise 2 fall 5
    server controller2 controller2:6080 check inter 2000 rise 2 fall 5
    server controller3 controller3:6080 check inter 2000 rise 2 fall 5
    .......
    重启下haproxy,如果发现服务状态不对,先不管,后面改系统内核参数可以解决


    systemctl start haproxy.service
    systemctl status haproxy.service

  24. 配置Haproxy能监控Galera数据库集群
    在controller1上进入mysql,创建clustercheck
    MariaDB [(none)]> grant process on . to ‘clustercheckuser‘@‘localhost‘ identified by ‘clustercheckpassword!‘;
    .......
    三个节点分别创建clustercheck文本,里面是clustercheckuser用户和密码
    vim /etc/sysconfig/clustercheck

    添加:
    MYSQL_USERNAME=clustercheckuser
    .......
    确认下是否存在/usr/bin/clustercheck 脚本,如果没有从网上下载一个,然后放到/usr/bin目录下面,记得chmod +x
    /usr/bin/clustercheck 赋予权限
    .......
    在controller1上检查haproxy服务状态


    clustercheck (存在/user/bin/clustercheck可以直接运行clustercheck命令)

    结合xinetd监控Galera服务(三个节点都安装xinetd)


    yum -y install xinetd
    vim /etc/xinetd.d/mysqlchk

    添加以下内容:


    default: on

    .......
    .......
    scp /etc/xinetd.d/mysqlchk controller3:/etc/xinetd.d/mysqlchk


    vim /etc/services

    最后一行添加:mysqlchk 9200/tcp # mysqlchk
    重启xinetd服务


    systemctl restart xinetd.service
    systemctl status xinetd.service

  25. 三个节点修改内核参数
    修改内核参数的作用是让haproxy正常启动
    .......

  26. 三个节点启动haproxy服务
    systemctl restart haproxy.service
    systemctl status haproxy.service

  27. 访问haproxy 前端web平台
    http://9.110.187.128:8088/haproxy/stats admin/passw0rd
    Galera集群服务已经监控成功
    五、安装配置Keystone

  28. 配置openstack Mitaka yum源
    cd /etc/yum.repos.d
    vim openstack-mitaka.repo

    添加:
    .......
    2、在controller1上创建keystone数据库


    mysql -uroot -p

    MariaDB [(none)]> CREATE DATABASE keystone;
    3、在controller1上创建数据库用户及赋予权限
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone. TO ‘keystone‘@‘localhost‘ IDENTIFIED BY ‘passw0rd‘;
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.
    TO ‘keystone‘@‘%‘ IDENTIFIED BY ‘passw0rd‘;
    注意将passw0rd 替换为自己的数据库密码


  29. 在三个节点上分别安装keystone
    yum -y install openstack-keystone httpd mod_wsgi python-openstackclient memcached python-memcached openstackutils

    5.在三个节点上分别启动memcache服务并设置开机自启动


    systemctl enable memcached.service
    systemctl start memcached.service
    systemctl status memcached.service

    6、配置/etc/keystone/keystone.conf文件
    .......


  30. 配置httpd.conf文件
    vim /etc/httpd/conf/httpd.conf

    ServerName controller1 (如果是controller2那就写controller2)
    Listen 8080 (80->8080 haproxy里用了80,不修改启动不了)


  31. 配置keystone与httpd结合
    vim /etc/httpd/conf.d/wsgi-keystone.conf

    .......


  32. 在controller1上设置数据库同步
    su -s /bin/sh -c "keystone-manage db_sync" keystone

  33. 三个节点都要启动httpd,并设置httpd开机启动
    systemctl enable httpd.service
    systemctl start httpd.service
    systemctl status httpd.service
    systemctl list-unit-files |grep httpd.service

  34. 在controller1上创建 admin 用户角色
    keystone-manage bootstrap

    --bootstrap-password passw0rd
    --bootstrap-username admin
    --bootstrap-project-name admin
    .......
    这样,就可以在 openstack 命令行里使用 admin 账号登录了。
    验证,测试是否已配置合理:


    openstack project list --os-username admin --os-project-name admin --os-user-domain-id default --os-project-domain-id

    default --os-identity-api-version 3 --os-auth-url http://demo.openstack.com:5000 --os-password passw0rd


  35. 在controller1上创建admin用户环境变量,创建/root/admin-openrc 文件并写入如下内容:
    vim /root/admin-openrc

    添加以下内容:
    export OS_USER_DOMAIN_ID=default
    export OS_PROJECT_DOMAIN_ID=default
    export OS_USERNAME=admin
    .......


  36. 在controller1上创建endpoint
    source /root/admin-openrc
    openstack endpoint create --region RegionOne identity public http://demo.openstack.com:5000/v3
    openstack endpoint create --.......

  37. 在controller1上创建service项目
    openstack project create --domain default --description "Service Project" service

    .......


  38. 在controller1上创建demo用户环境变量,创建/root/demo-openrc 文件并写入下列内容:
    vim /root/demo-openrc

    添加:
    export OS_USER_DOMAIN_ID=default
    export OS_PROJECT_DOMAIN_ID=default
    export OS_USERNAME=demo
    export OS_PROJECT_NAME=demo
    .......


  39. 另外两个节点Keystone的安装
    另外两个controller节点只需要从第三点开始安装即可
    具体要操作的步骤点列表: 4、 5、6 、7、8、 10、11、12
    六、安装配置glance
    1、在controller1上创建glance数据库
    MariaDB [(none)]> CREATE DATABASE glance;
    2、在controller1上创建数据库用户并赋予权限
    .......
    3、在controller1上创建glance用户及赋予admin权限
    source /root/admin-openrc

    .......
    4、在controller1上创建image服务


    openstack service create --name glance --description "OpenStack Image service" image

    5、在controller1上创建glance的endpoint


    openstack endpoint create --region RegionOne image public http://demo.openstack.com:9292

    .......
    6、在controller1、2、3上安装glance相关rpm包


    yum install openstack-glance python-glance python-glanceclient -y

    7、在controller1、2、3上修改glance配置文件/etc/glance/glance-api.conf
    注意红色的密码设置成你自己的


    >/etc/glance/glance-api.conf
    openstack-config --set /etc/glance/glance-api.conf DEFAULT debug False
    openstack-config --set /etc/glance/glance-api.conf DEFAULT verbose True
    openstack-config --set /etc/glance/glance-api.conf DEFAULT bind_host controller1
    openstack-config --set /etc/glance/glance-api.conf DEFAULT bind_port 9393
    openstack-config --set /etc/glance/glance-api.conf DEFAULT registry_host controller1
    openstack-config --set /etc/glance/glance-api.conf DEFAULT registry_port 9191
    openstack-config --set /etc/glance/glance-api.conf DEFAULT auth_region RegionOne
    openstack-config --set /etc/glance/glance-api.conf DEFAULT registry_client_protocol http

    .......
    8、在controller1、2、3上修改glance配置文件/etc/glance/glance-registry.conf:


    >/etc/glance/glance-registry.conf
    openstack-config --set /etc/glance/glance-registry.conf DEFAULT debug False
    openstack-config --set /etc/glance/glance-registry.conf DEFAULT verbose True
    openstack-config --set /etc/glance/glance-registry.conf DEFAULT bind_host controller1
    openstack-config --set /etc/glance/glance-registry.conf DEFAULT bind_port 9191
    openstack-config --set /etc/glance/glance-registry.conf DEFAULT workers 4
    openstack-config --set /etc/glance/glance-registry.conf oslo_messaging_rabbit rabbit_hosts 10.1.1.120:5672, 10.1.1.121:5672,

    10.1.1.122:5672
    .......
    9、controller1同步glance数据库


    su -s /bin/sh -c "glance-manage db_sync" glance

    10、在controller1、2、3上启动glance及设置开机启动


    systemctl enable openstack-glance-api.service openstack-glance-registry.service

    .......
    11、在controller1、2、3上将glance版本号写入环境变量中


    echo " " >> /root/admin-openrc &&
    echo " " >> /root/demo-openrc &&

    .......


  40. 搭建glance后端存储
    因为是HA环境,3个控制节点必须要有一个共享的后端存储,不然request发起请求的时候不确定会去调用哪个控制节点的glance服务,
    如果没有共享存储池存镜像,那么会遇到创建VM时候image找不到的问题。
    这里我们采用NFS的方式把glance的后端存储建立起来,当然在实际的生产环境当中,一般会用ceph、GlusterFS等方式,这里我们以
    NFS为例子来讲诉后端存储的搭建。
    首先准备一台物理机或者虚拟机,要求空间要大,网络最好是在万兆
    这里我们用10.1.1.134这台虚拟机
    首先在这台机器上安装glance组件:
    .......
    systemctl start nfs-server

    让NFS共享目录生效:


    showmount -e

    接着在3个controller节点上做如下操作:


    mount -t nfs 10.1.1.134:/var/lib/glance/images /var/lib/glance/images
    echo "/usr/bin/mount -t nfs 10.1.1.134:/var/lib/glance/ /var/lib/glance/" >> /etc/rc.d/rc.local

    .......
    13、在controller1上下载测试镜像文件


    wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

    14、在controller1上传镜像到glance


    source /root/admin-openrc
    glance image-create --name "cirros-0.3.4-x86_64" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --containerformat

    bare --visibility public --progress
    如果你做好了一个CentOS6.7系统的镜像,也可以用这命令操作,例:
    .......
    查看镜像列表:


    glance image-list

    15、 其他两个节点重复6、7、8、10、11步骤
    七、安装配置nova
    1、在controller1上创建nova数据库
    MariaDB [(none)]> CREATE DATABASE nova;
    .......
    2、在controller1上创建数据库用户并赋予权限
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO ‘nova‘@‘localhost‘ IDENTIFIED BY ‘passw0rd‘;
    .......
    3、在controller1上创建nova用户及赋予admin权限


    source /root/admin-openrc
    openstack user create --domain default nova --password passw0rd

    .......
    4、在controller1上创建computer服务


    openstack service create --name nova --description "OpenStack Compute" compute

    5、在controller1上创建nova的endpoint


    openstack endpoint create --region RegionOne compute public http://demo.openstack.com:8774/v2.1/%(tenant_id)s

    .......
    6、在controller1、2、3上安装nova相关软件


    yum install -y openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstacknova-

    novncproxy openstack-nova-scheduler
    7、在controller1、2、3上配置nova的配置文件/etc/nova/nova.conf


    >/etc/nova/nova.conf
    openstack-config --set /etc/nova/nova.conf DEFAULT debug False
    openstack-config --set /etc/nova/nova.conf DEFAULT verbose True
    openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata
    openstack-config --set /etc/nova/nova.conf DEFAULT osapi_compute_listen_port 9774
    openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 10.1.1.120
    openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron True
    openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver

    .......
    注意:其他节点上记得替换IP,还有密码,文档红色以及绿色的地方。
    8、在controller1上同步nova数据


    su -s /bin/sh -c "nova-manage api_db sync" nova

    .......
    9、在controller1上设置开机启动


    systemctl enable openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstacknova-

    scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
    .......
    .......


    systemctl list-unit-files |grep openstack-nova-*

    10、随便一个节点上验证nova服务


    unset OS_TOKEN OS_URL
    source /root/admin-openrc

    .......


    openstack endpoint list 查看endpoint list命令

  41. controller2 & controller3 节点分别重复6、7、9、10
    注意第7步的绿色IP记得换成本机的IP
    八、安装配置neutron
    1、在controller1上创建neutron数据库
    MariaDB [(none)]> CREATE DATABASE neutron;
    2、在controller1上创建数据库用户并赋予权限
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron. TO ‘neutron‘@‘localhost‘ IDENTIFIED BY ‘passw0rd‘;
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.
    TO ‘neutron‘@‘%‘ IDENTIFIED BY ‘passw0rd‘;
    3、在controller1上创建neutron用户及赋予admin权限
    source /root/admin-openrc

    .......
    4、在controller1上创建network服务


    openstack service create --name neutron --description "OpenStack Networking" network

    5、在controller1上创建endpoint


    openstack endpoint create --region RegionOne network public http://demo.openstack.com:9696

    .......
    6、在controller1、2、3上安装neutron相关软件


    yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y

    7、在controller1、2、3上配置neutron配置文件/etc/neutron/neutron.conf


    >/etc/neutron/neutron.conf
    openstack-config --set /etc/neutron/neutron.conf DEFAULT debug False
    openstack-config --set /etc/neutron/neutron.conf DEFAULT verbose true
    openstack-config --set /etc/neutron/neutron.conf DEFAULT bind_host controller1
    openstack-config --set /etc/neutron/neutron.conf DEFAULT bind_port 9797
    openstack-config --set /etc/neutron/neutron.conf DEFAULT core_plugin neutron.plugins.ml2.plugin.Ml2Plugin
    openstack-config --set /etc/neutron/neutron.conf DEFAULT service_plugins

    neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,neutron.services.metering.metering_plugin.MeteringPlugin


    openstack-config --set /etc/neutron/neutron.conf DEFAULT rpc_backend rabbit

    .......


    openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_max_retries 0
    openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit amqp_durable_queues False
    openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_uri http://demo.openstack.com:5000
    openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://demo.openstack.com:35357

    .......


    openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_vxlan vni_ranges 1:1000
    openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup enable_ipset True

    9、在controller1、2、3上配置/etc/neutron/plugins/ml2/linuxbridge_agent.ini


    openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini DEFAULT debug false
    openstack-config --

    .......
    注意eno67109408是public网卡,一般这里写的网卡名都是能访问外网的,如果不是外网网卡,那么VM就会与外界网络隔离。
    10、在controller1、2、3上配置 /etc/neutron/l3_agent.ini


    openstack-config --set /etc/neutron/l3_agent.ini DEFAULT interface_driver

    neutron.agent.linux.interface.BridgeInterfaceDriver
    .......
    11、在controller1、2、3上配置/etc/neutron/dhcp_agent.ini


    openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT interface_driver

    neutron.agent.linux.interface.BridgeInterfaceDriver
    .......
    12、在controller1、2、3上重新配置/etc/nova/nova.conf,配置这步的目的是让compute节点能使用上neutron网络


    openstack-config --set /etc/nova/nova.conf neutron url http://demo.openstack.com:9696
    openstack-config --set /etc/nova/nova.conf neutron auth_url http://demo.openstack.com:35357
    openstack-config --set /etc/nova/nova.conf neutron auth_plugin password

    .......
    13、在controller1、2、3上将dhcp-option-force=26,1450写入/etc/neutron/dnsmasq-neutron.conf


    echo "dhcp-option-force=26,1450" >/etc/neutron/dnsmasq-neutron.conf

    14、在controller1、2、3上配置/etc/neutron/metadata_agent.ini


    openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT nova_metadata_ip demo.openstack.com

    .......
    15、在controller1、2、3上创建软链接


    ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

    16、在controller1上同步数据库


    su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file

    /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
    17、在controller1、2、3上重启nova服务,因为刚才改了nova.conf


    systemctl restart openstack-nova-api.service
    systemctl status openstack-nova-api.service

    18、在controller1、2、3上重启neutron服务并设置开机启动


    systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutronmetadata-

    agent.service
    .......
    19、在controller1、2、3上启动neutron-l3-agent.service并设置开机启动


    systemctl enable neutron-l3-agent.service
    systemctl start neutron-l3-agent.service
    systemctl status neutron-l3-agent.service

    20、随便一节点上执行验证


    source /root/admin-openrc

    .......


    neutron agent-list

    21、创建vxLan模式网络,让虚拟机能外出
    a. 首先先执行环境变量


    source /root/admin-openrc

    b. 创建flat模式的public网络,注意这个public是外出网络,必须是flat模式的
    .......
    f. 创建路由,我们在界面上操作
    点击项目-->网络-->路由-->新建路由
    路由名称随便命名,我这里写"router", 管理员状态,选择"上"(up),外部网络选择"provider"
    点击"新建路由"后,提示创建router创建成功!
    .......
    22、检查网络服务


    neutron agent-list

    看服务是否是笑脸
    九、安装Dashboard
    1、安装dashboard相关软件包


    yum install openstack-dashboard -y

    2、修改配置文件/etc/openstack-dashboard/local_settings


    vim /etc/openstack-dashboard/local_settings

    直接覆盖我给的local_settings文件也行(为了减少出错,大家还是用我提供的local_settings文件替换覆盖)
    3、启动dashboard服务并设置开机启动


    systemctl enable httpd.service memcached.service
    systemctl restart httpd.service memcached.service
    systemctl status httpd.service memcached.service

    到此,Controller HA节点搭建完毕,打开firefox浏览器即可访问http://9.110.187.128/dashboard/ 可进入openstack界面!
    十、安装配置cinder
    1、在controller1上创建数据库用户并赋予权限
    MariaDB [(none)]> CREATE DATABASE cinder;
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder. TO ‘cinder‘@‘localhost‘ IDENTIFIED BY ‘passw0rd‘;
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.
    TO ‘cinder‘@‘%‘ IDENTIFIED BY ‘passw0rd‘;
    2、在controller1上创建cinder用户并赋予admin权限


    source /root/admin-openrc
    openstack user create --domain default cinder --password passw0rd
    openstack role add --project service --user cinder admin

    3、在controller1上创建volume服务


    openstack service create --name cinder --description "OpenStack Block Storage" volume
    openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2

    4、在controller1上创建endpoint


    openstack endpoint create --region RegionOne volume public http://demo.openstack.com:8776/v1/%(tenant_id)s

    .......
    5、在controller1、2、3上安装cinder相关服务


    yum install openstack-cinder -y

    6、在controller1、2、3上配置cinder配置文件


    >/etc/cinder/cinder.conf
    openstack-config --set /etc/cinder/cinder.conf DEFAULT debug False
    openstack-config --set /etc/cinder/cinder.conf DEFAULT verbose True
    openstack-config --set /etc/cinder/cinder.conf DEFAULT my_ip 10.1.1.120
    openstack-config --set /etc/cinder/cinder.conf DEFAULT rpc_backend rabbit
    openstack-config --set /etc/cinder/cinder.conf DEFAULT osapi_volume_listen_port 8778
    openstack-config --set /etc/cinder/cinder.conf DEFAULT auth_strategy keystone

    .......


    openstack-config --set /etc/cinder/cinder.conf oslo_messaging_rabbit rabbit_retry_backoff 2
    openstack-config --set /etc/cinder/cinder.conf oslo_messaging_rabbit rabbit_max_retries 0
    openstack-config --set /etc/cinder/cinder.conf oslo_messaging_rabbit amqp_durable_queues False
    openstack-config --set /etc/cinder/cinder.conf keystone_authtoken auth_uri http://demo.openstack.com:5000
    openstack-config --set /etc/cinder/cinder.conf keystone_authtoken auth_url http://demo.openstack.com:35357

    .......


    openstack-config --set /etc/cinder/cinder.conf oslo_concurrency lock_path /var/lib/cinder/tmp

    7、在controller1上同步数据库


    su -s /bin/sh -c "cinder-manage db sync" cinder

    8、在controller1、2、3上启动cinder服务,并设置开机启动


    systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service

    .......
    注意!其他controller2和controller3 重复做5、6、8步即可!
    11、安装Cinder节点,Cinder节点这里我们需要额外的添加一个硬盘(/dev/sdb)用作cinder的存储服务(注意!这一步是在cinder节点
    操作的)


    yum install lvm2 -y

    .......


  42. 编辑存储节点lvm.conf文件(注意!这一步是在cinder节点操作的)
    vim /etc/lvm/lvm.conf

    在devices 下面添加 filter = [ "a/sda/", "a/sdb/", "r/.*/"] ,如图:
    然后重启下lvm2服务:


    systemctl restart lvm2-lvmetad.service
    systemctl status lvm2-lvmetad.service

    15、安装openstack-cinder、targetcli (注意!这一步是在cinder节点操作的)
    yum install openstack-cinder targetcli python-keystone ntpdate -y
    16、配置cinder配置文件(注意!这一步是在cinder节点操作的)


    >/etc/cinder/cinder.conf
    openstack-config --set /etc/cinder/cinder.conf DEFAULT debug False
    openstack-config --set /etc/cinder/cinder.conf DEFAULT verbose True

    .......


    openstack-config --set /etc/cinder/cinder.conf oslo_messaging_rabbit rabbit_ha_queues True
    openstack-config --set /etc/cinder/cinder.conf oslo_messaging_rabbit rabbit_use_ssl False
    openstack-config --set /etc/cinder/cinder.conf oslo_messaging_rabbit rabbit_retry_interval 1

    .......


    openstack-config --set /etc/cinder/cinder.conf keystone_authtoken auth_uri http://demo.openstack.com:5000
    openstack-config --set /etc/cinder/cinder.conf keystone_authtoken auth_url http://demo.openstack.com:35357
    openstack-config --set /etc/cinder/cinder.conf keystone_authtoken memcached_servers

    controller1:11211,controller2:11211,controller3:11211


    openstack-config --set /etc/cinder/cinder.conf keystone_authtoken auth_type password
    openstack-config --set /etc/cinder/cinder.conf keystone_authtoken project_domain_name default
    openstack-config --set /etc/cinder/cinder.conf keystone_authtoken user_domain_name default

    .......


    openstack-config --set /etc/cinder/cinder.conf lvm iscsi_protocol iscsi
    openstack-config --set /etc/cinder/cinder.conf lvm iscsi_helper lioadm
    openstack-config --set /etc/cinder/cinder.conf oslo_concurrency lock_path /var/lib/cinder/tmp

    17、启动openstack-cinder-volume和target并设置开机启动(注意!这一步是在cinder节点操作的)


    systemctl enable openstack-cinder-volume.service target.service

    .......
    18、在任意一个节点上验证cinder服务是否正常


    source /root/admin-openrc
    cinder service-list

    十一、把相关服务和资源添加到Pacermaker


  43. Pacermaker参数说明
    primitive添加格式:
    primitive 唯一ID 资源代理类型:资源代理的提供程序:资源代理名称
    params attr_list
    meta attr_list
    op op_type [=...] ...]
    primitive 参数说明:
    资源代理类型: lsb, ocf, stonith, service
    资源代理的提供程序: heartbeat , pacemaker
    资源代理名称:即resource agent, 如:IPaddr2,httpd, mysql
    params:实例属性,是特定资源类的参数,用于确定资源类的行为方式及其控制的服务实例。
    meta:元属性, 是可以为资源添加的选项。它们告诉 CRM 如何处理特定资源。
    op:操作,默认情况下,群集不会确保您的资源一直正常。要指示群集确保资源状况依然正常,需要向资源的定义中添加一个监视操作
    monitor。可为所有类或资源代理添加monitor。
    op_type :包括 start,stop,monitor
    interval :执行操作的频率。单位:秒。
    timeout : 需要等待多久才声明操作失败。
    requires :需要满足什么条件才能发生此操作。允许的值:nothing、quorum 和 fencing。默认值取决于是否启用屏障和资源的类是否
    为 stonith。对于 STONITH 资源,默认值为 nothing。
    on-fail :此操作失败时执行的操作。允许的值:
    ignore:假装资源没有失败。
    block:不对资源执行任何进一步操作。
    stop:停止资源并且不在其他位置启动该资源。
    restart:停止资源并(可能在不同的节点上)重启动。
    fence:关闭资源失败的节点 (STONITH)。
    standby:将所有资源从资源失败的节点上移走。
    enabled 如果值为 false,将操作视为不存在。允许的值:true、false。
    例:
    primitive r0 ocf:linbit:drbd
    params drbd_resource=r0
    op monitor role=Master interval=60s
    op monitor role=Slave interval=300s
    meta元属性参数说明:
    priority:如果不允许所有的资源都处于活动状态,群集会停止优先级较低的资源以便保持较高优先级资源处于活动状态。
    target-role: 此资源试图保持的状态,包括started和stopped
    is-managed:是否允许群集启动和停止资源,包括true和 false。
    migration-threshold:用来定义资源的故障次数,假设已经为资源配制了一个首选在节点上运行的位置约束。如果那里失败了,系统会检
    查 migration-threshold 并与故障计数进行比较。如果故障计数 >= migration-threshold,会将资源迁移到下一个自选节点。
    默认情况下,一旦达到阈值,就只有在管理员手动重置资源的故障计数后(在修复故障原因后),才允许在该节点上运行有故障的资源。
    但是,可以通过设置资源的 failure-timeout 选项使故障计数失效。如果设置migration-threshold=2 和 failure-timeout=60s ,将会导
    致资源在两次故障后迁移到新的节点,并且可能允许在一分钟后移回(取决于黏性和约束分数)。
    迁移阈值概念有两个例外,在资源启动失败或停止失败时出现:启动故障会使故障计数设置为 INFINITY,因此总是导致立即迁移。停止故障会
    导致屏障(stonith-enabled 设置为 true 时,这是默认设置)。如果不定义 STONITH资源(或 stonith-enabled 设置为 false),则该资源根本
    不会迁移。
    failure-timeout:在恢复为如同未发生故障一样正常工作(并允许资源返回它发生故障的节点)之前,需要等待几秒钟,,默认值0
    (disabled)
    resource-stickiness:资源留在所处位置的自愿程度如何,即黏性,默认为0。
    multiple-active:如果发现资源在多个节点上活动,群集该如何操作,包括:
    block(将资源标记为未受管),stop_only(停止所有活动实例),stop_start(默认值,停止所有活动实例,并在某个节点启动资源)
    requires:定义某种条件下资源会被启动。默认资源会被fencing,为以下这几种值时除外

    • nothing - 集群总能启动资源;

    • quorum - 集群只有在大多数节点在线时能启动资源,当stonith-enabled为false 或资源为stonith时,其为默认值;

    • fencing - 集群只有在大多数节点在线,或在任何失败或未知节点被关闭电源时,才能启动资源;

    • unfencing - 集群只有在大多数节点在线,或在任何失败或未知节点被关闭电源时并且只有当节点没被fencing时,才能启动资源。当为
      某一fencing设备,而将stonith的meta参数设置为provides=unfencing时,其为默认值。


  44. 添加RabbitMQ 服务到PCS
    rabbitmq的PCS资源在/usr/lib/ocf/resource.d/rabbitmq 下
    在每个控制节点上操作:
    systemctl disable rabbitmq-server

    在controller1上操作:


    cat /var/lib/rabbitmq/.erlang.COOKIE 查看本机rabbitmq COOKIE值,下面红色部分就是erlang COOKIE值
    crm configure

    primitive p_rabbitmq-server ocf:rabbitmq:rabbitmq-server-ha
    params erlang_COOKIE=OBXLKSWFQVGZLAUBLIKX node_port=5672
    op monitor interval=30 timeout=60
    op monitor interval=27 role=Master timeout=60
    op start interval=0 timeout=360
    op stop interval=0 timeout=120
    op promote interval=0 timeout=120
    op demote interval=0 timeout=120
    op notify interval=0 timeout=180
    meta migration-threshold=10 failure-timeout=30s resource-stickiness=100
    .......
    做完资源添加操作大概过4-5分钟后,服务才能接管起来:
    crm status


  45. 添加haproxy到PCS
    在每个控制节点上操作:
    systemctl disable haproxy

    .......


  46. 添加glance相关服务到PCS
    在每个控制节点上操作:
    systemctl disable openstack-glance-api openstack-glance-registry

    在controller1上操作:


    crm configure

    primitive openstack-glance-api systemd:openstack-glance-api
    op start interval=0s timeout=30
    op stop interval=0s timeout=30
    op monitor interval=30 timeout=30
    .......
    commit


  47. 添加nova相关服务到PCS
    在每个控制节点上操作:
    #systemctl disable openstack-nova-api openstack-nova-cert openstack-nova-consoleauth openstack-nova-scheduler
    openstack-nova-conductor openstack-nova-novncproxy
    在controller1上操作:
    crm configure

    primitive openstack-nova-api systemd:openstack-nova-api
    op start interval=0s timeout=45
    op stop interval=0s timeout=45
    op monitor interval=30 timeout=30
    primitive openstack-nova-cert systemd:openstack-nova-cert
    op start interval=0s timeout=45
    op stop interval=0s timeout=45
    op monitor interval=30 timeout=30
    .......
    commit
    clone openstack-nova-api-clone openstack-nova-api
    meta target-role=Started
    clone openstack-nova-cert-clone openstack-nova-cert
    meta target-role=Started
    clone openstack-nova-conductor-clone openstack-nova-conductor
    meta target-role=Started
    clone openstack-nova-novncproxy-clone openstack-nova-novncproxy
    meta target-role=Started
    clone openstack-nova-scheduler-clone openstack-nova-scheduler
    meta target-role=Started
    commit


  48. 添加cinder相关服务到PCS
    在每个控制节点上操作:
    systemctl disable openstack-cinder-api openstack-cinder-scheduler

    在controller1上操作:


    crm configure

    primitive openstack-cinder-api systemd:openstack-cinder-api
    op start interval=0s timeout=45
    op stop interval=0s timeout=45
    op monitor interval=30 timeout=30
    .......
    commit


  49. 添加neutron相关服务到PCS
    在每个控制节点上操作:
    systemctl disable neutron-server neutron-l3-agent neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadataagent

    在controller1上操作:


    crm configure

    primitive openstack-neutron-server systemd:neutron-server
    op start interval=0s timeout=45
    .......
    primitive openstack-neutron-dhcp-agent systemd:neutron-dhcp-agent
    op start interval=0s timeout=45
    op stop interval=0s timeout=45
    op monitor interval=30 timeout=30
    primitive openstack-neutron-metadata-agent systemd:neutron-metadata-agent
    op start interval=0s timeout=45
    op stop interval=0s timeout=45
    op monitor interval=30 timeout=30
    .......
    clone openstack-neutron-metadata-agent-clone openstack-neutron-metadata-agent
    meta target-role=Started
    commit


  50. 排错
    如果有服务起不来,对照下面列表cleanup下(视频里有详解)
    crm resource cleanup rabbitmq-server-clone
    crm resource cleanup openstack-memcached-clone
    crm resource cleanup openstack-glance-api-clone
    .......
    Compute节点部署
    一、安装相关依赖包
    yum install openstack-selinux python-openstackclient yum-plugin-priorities openstack-nova-compute openstack-utils

    ntpdate -y


  51. 配置nova.conf
    >/etc/nova/nova.conf
    openstack-config --set /etc/nova/nova.conf DEFAULT debug False
    openstack-config --set /etc/nova/nova.conf DEFAULT verbose True
    openstack-config --set /etc/nova/nova.conf DEFAULT force_raw_images True
    openstack-config --set /etc/nova/nova.conf DEFAULT remove_unused_original_minimum_age_seconds 86400

    .......


    openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_userid openstack
    openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_password passw0rd
    openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_use_ssl False
    openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_ha_queues True
    openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_retry_interval 1
    openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_retry_backoff 2

    .......


    openstack-config --set /etc/nova/nova.conf libvirt cpu_mode host-model

  52. 在线热迁移配置
    在线热迁移需要的前提条件:
    a. 需要有共享存储,NFS、 Ceph、 GPFS 或者直接连接EMC等存储设备都可以提供共享存储。
    b. 源和目标节点的 CPU 类型要一致。
    c. 源和目标节点的 Libvirt 版本要一致。
    d. 源和目标节点能相互识别对方的主机名称,可以在 /etc/hosts 中加入对方的主机名
    配置方法:
    .......
    b. 配置libvirtd.conf和libvirtd
    sed -i ‘s/#listen_tls = 0/listen_tls = 0/g‘ /etc/libvirt/libvirtd.conf
    sed -i ‘s/#listen_tcp = 1/listen_tcp = 1/g‘ /etc/libvirt/libvirtd.conf
    .......
    d. 设置libvirtd.service 和openstack-nova-compute.service开机启动,并且重启libvirtd &openstack-nova-compute
    systemctl enable libvirtd.service openstack-nova-compute.service

    .......
    e. 热迁移虚拟机操作
    命令:nova live-migration instance_id node_name


    nova live-migration 990b077d-663c-4a61-bd64-0e5ebeab2554 compute2
    nova show 990b077d-663c-4a61-bd64-0e5ebeab2554 查看是否确实迁移成功

  53. 添加环境变量
    cat </root/admin-openrc

    export OS_PROJECT_DOMAIN_NAME=default
    export OS_USER_DOMAIN_NAME=default
    export OS_PROJECT_NAME=admin
    export OS_USERNAME=admin
    export OS_PASSWORD=passw0rd
    export OS_AUTH_URL=http://demo.openstack.com:35357/v3
    export OS_IDENTITY_API_VERSION=3
    END


    cat </root/demo-openrc

    export OS_PROJECT_DOMAIN_NAME=default
    export OS_USER_DOMAIN_NAME=default
    .......


  54. 验证
    source /root/admin-openrc
    openstack compute service list

    二、安装Neutron


  55. 安装相关软件包
    yum install openstack-neutron-linuxbridge ebtables ipset -y

  56. 配置neutron.conf
    >/etc/neutron/neutron.conf
    sed -i ‘/^connection/d‘ /etc/neutron/neutron.conf
    openstack-config --set /etc/neutron/neutron.conf DEFAULT debug False
    openstack-config --set /etc/neutron/neutron.conf DEFAULT verbose True
    openstack-config --set /etc/neutron/neutron.conf DEFAULT rpc_backend rabbit

    .......


  57. 配置/etc/neutron/plugins/ml2/linuxbridge_agent.ini
    openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings

    provider:eno50332184


    openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan True

    .......
    注意provider后面那个网卡名是第二块网卡的名称。


  58. 配置nova.conf
    openstack-config --set /etc/nova/nova.conf neutron url http://demo.openstack.com:9696
    openstack-config --set /etc/nova/nova.conf neutron auth_url http://demo.openstack.com:35357
    openstack-config --set /etc/nova/nova.conf neutron auth_type password

    .......


  59. 重启和enable相关服务
    systemctl restart libvirtd.service openstack-nova-compute.service

    .......
    三、配置Cinder


  60. 计算节点要是想用cinder,那么需要配置nova配置文件(注意!这一步是在计算节点操作的)
    openstack-config --set /etc/nova/nova.conf cinder os_region_name RegionOne

    .......


  61. 然后在controller1、2、3上重启nova服务
    systemctl restart openstack-nova-api.service

    .......
    四. 验证


    source /root/admin-openrc
    neutron ext-list
    neutron agent-list

    到此,Computer节点搭建完毕,运行nova host-list可以查看新加入的computer1节点
    如果需要再添加另外一个computer节点,只要重复下第二大步即可!记得把计算机名和IP地址改下。_
    技术分享图片



推荐阅读
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • mysql-cluster集群sql节点高可用keepalived的故障处理过程
    本文描述了mysql-cluster集群sql节点高可用keepalived的故障处理过程,包括故障发生时间、故障描述、故障分析等内容。根据keepalived的日志分析,发现bogus VRRP packet received on eth0 !!!等错误信息,进而导致vip地址失效,使得mysql-cluster的api无法访问。针对这个问题,本文提供了相应的解决方案。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
author-avatar
不爽我就来吐槽_320
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有