2020-08-15 架构师第6周作业

▲单独架构的小伙伴看这里:(学习杰哥视频的作业第11-12天)

1、实现openstack控制端的高可用

1.1 环境描述

172.31.7.101:ctrl-01;已经安装好的openstack控制结点;配置好haproxy

172.31.7.102:ctrl-02 ;要加入的新的openstack控制结点;配置好haproxy

1.2 新添加的controller节点基础环境准备

1、安装T版yum源

[ctrl-02]# yum install centos-release-openstack-train.noarch -y 

2、安装openstack客户端命令和selinux

[ctrl-02]# yum install python-openstackclient openstack-selinux -y  

3、安装py程序连接mysql所需要的模块

[ctrl-02]# yum install python2-PyMySQL -y  

4、安装py程序连接memcache所需要的模块

[ctrl-02]# yum install python-memcached -y  

5、将controller1上admin和myuser用户的环境变量拷贝到当前controller2节点上

[ctrl-02]# scp 172.31.7.101:/root/{admin-openrc.sh,demo-openrc.sh} /root/

1.3 controller-安装keystone

1、安装kyestone服务

[ctrl-02] # yum install openstack-keystone httpd mod_wsgi -y 

2、到controller1节点上,把已经部署好的keystone的配置文件目录进行打包

[ctrl-01] # cd /etc/keystone/

[ctrl-01] # tar czvf keystone-controller1.tar.gz ./*

3、拷贝到当前controller2节点上并修改相关配置文件

[ctrl-01] # scp keystone-controller1.tar.gz 172.31.7.102:/etc/keyston

[ctrl-02] # cd /etc/keystone/

[ctrl-02] # tar xvf keystone-controller1.tar.gz

[ctrl-02] # vim /etc/httpd/conf/httpd.conf

             ServerName 172.31.7.102:80    #让servername监听本机地址(主站点)

[ctrl-02] # vim /etc/hosts

              172.31.7.248 openstack-vip.linux.local

[ctrl-02] # ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

[ctrl-02] # systemctl start httpd.service

[ctrl-02] # systemctl enable httpd.service

4、到controller2节点进行测试,关闭haproxy上controller1节点的5000端口,通过controller2节点5000端口进行测试

[ctrl-02] # . admin-openrc.sh

[ctrl-02] # neutron agent-list   

#能通过keystone认证后,从mysql中获取到数据即配置正确

1.4 controller-安装glance

1、安装glance服务

[ctrl-02] # yum install openstack-glance -y

2、到controller1节点上,把已经部署好的glance的配置文件目录进行打包

[ctrl-01] # cd /etc/glance/

[ctrl-01] # tar czvf glance-controller1.tar.gz ./*

3、拷贝到当前controller2节点上并修改相关配置文件

[ctrl-01] # scp glance-controller1.tar.gz 172.31.7.102:/etc/glance/

[ctrl-02] # cd /etc/glance/

[ctrl-02] # tar xvf glance-controller1.tar.gz

[ctrl-02] # systemctl start openstack-glance-api.service

[ctrl-02] # systemctl enable openstack-glance-api.service

[ctrl-02] # vim /etc/fstab   

172.31.7.105:/data/glance/ /var/lib/glance/images/ nfs defaults,_netdev 0 0

[ctrl-02] # mount -a           

#注意 /var/lib/glance/images/ 目录权限,如果权限不对则执行下面命令:chown glance.glance /var/lib/glance/images/ -R

4、关闭haproxy上controller1节点的9292端口,通过controller2节点9292端口进行测试

[ctrl-02] # openstack image list         #通过keystone认证后,是否能够获取到镜像

1.5 controller-安装placement

1、安装placement服务

[ctrl-02] # yum install openstack-placement-api -y

2、到controller1节点上,把已经部署好的placement的配置文件目录进行打包

[ctrl-01] # cd /etc/placement/

[ctrl-01] # tar czvf placement-controller1.tar.gz ./*

3、拷贝到当前controller2节点上并解包

[ctrl-01] # scp placement-controller1.tar.gz 172.31.7.102:/etc/placement/

[ctrl-02] #  cd /etc/placement/

[ctrl-02] #  tar xvf placement-controller1.tar.gz

4、修改placement配置文件并重启服务

[ctrl-02] #  vim /etc/httpd/conf.d/00-placement-api.conf     

#下面内容添加到配置文件的最后

<Directory /usr/bin>

  <IfVersion >= 2.4>

      Require all granted

  </IfVersion>

  <IfVersion < 2.4>

      Order allow,deny

      Allow from all

  </IfVersion>

</Directory>

[ctrl-02] #  systemctl restart httpd

5、关闭haproxy上controller1节点的8778端口,通过controller2节点8778端口进行测试

[ctrl-02] #  placement-status upgrade check                #查看状态是否是success

1.6 controller-安装nova

1、安装nova服务

[ctrl-02] # yum install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-schedule -y

2、到controller1节点上,把已经部署好的nova的配置文件目录进行打包

[ctrl-01] # cd /etc/nova/

[ctrl-01] # tar czvf nova-controller1.tar.gz ./*

3、拷贝到当前controller2节点上并修改相关配置文件

[ctrl-01] # scp nova-controller1.tar.gz 172.31.7.102:/etc/nova/

[ctrl-02] # cd /etc/nova/

[ctrl-02] # tar xvf nova-controller1.tar.gz

[ctrl-02] # grep "172" ./* -R                           #查看有哪些配置需要修改

./nova.conf:server_listen = 172.31.7.101

./nova.conf:server_proxyclient_address = 172.31.7.101

[ctrl-02] # vim nova.conf

[vnc]

server_listen = 172.31.7.102           #指定vnc服务端监听地址

server_proxyclient_address = 172.31.7.102

[ctrl-02] # systemctl start \

    openstack-nova-api.service \

    openstack-nova-scheduler.service \

    openstack-nova-conductor.service \

    openstack-nova-novncproxy.service

[ctrl-02] # systemctl enable \

    openstack-nova-api.service \

    openstack-nova-scheduler.service \

    openstack-nova-conductor.service \

    openstack-nova-novncproxy.service

[ctrl-02] # tail -f /var/log/nova/*.log                     #日志中不能有任何报错

4、关闭haproxy上controller1节点的8774和6080端口,通过controller2节点8774和6080端口进行测试

[ctrl-02] #nova service-list                   #列出nova的所有服务,并且状态必须是UP

1.7 controller-安装neutron

1、安装neutron服务

[ctrl-02] # yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y

2、到controller1节点上,把已经部署好的neutron的配置文件目录进行打包

[ctrl-01] # cd /etc/neutron/

[ctrl-01] # tar czvf neutron-controller1.tar.gz ./*

3、拷贝到当前controller2节点上并修改相关配置文件

[ctrl-01] # scp neutron-controller1.tar.gz 172.31.7.102:/etc/neutron/

[ctrl-02] # cd /etc/neutron/

[ctrl-02] # tar xvf neutron-controller1.tar.gz

[ctrl-02] # vim /etc/sysctl.conf                 #添加内核参数

             net.bridge.bridge-nf-call-iptables =1

              net.bridge.bridge-nf-call-ip6tables =1

[ctrl-02] # vim /usr/lib/python2.7/site-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py

    metric = 100              #第400行

    #if 'metric' in gateway:  #注释掉这两行,否则brq网桥设备无法自动绑定eth0网卡

    #    metric = gateway['metric'] - 1

[ctrl-02] # systemctl start neutron-server.service \

  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

  neutron-metadata-agent.service

[ctrl-02] # sysctl -p

[ctrl-02] # systemctl enable neutron-server.service \

  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

  neutron-metadata-agent.service 

[ctrl-02] # tail -f /var/log/neutron/*.log                   #日志中不能有任何报错

4、关闭haproxy上controller1节点的9696端口,通过controller2节点9696端口进行测试

[ctrl-02] # neutron agent-list                     #列出neutron的所有服务,并且状态必须是true

1.8 controller-安装dashboard

1、安装dashboard服务

[ctrl-02] # yum install openstack-dashboard -y

2、到controller1节点上,把已经部署好的glance的配置文件目录进行打包

[ctrl-01] # cd /etc/openstack-dashboard/

[ctrl-01] # tar zcvf openstack-dashboard-controller1.tar.gz ./*

3、拷贝到当前controller2节点上并修改相关配置文件

[ctrl-01] # scp openstack-dashboard-controller1.tar.gz 172.31.7.102:/etc/openstack-dashboard/

[ctrl-02] # cd /etc/openstack-dashboard/

[ctrl-02] # tar xvf openstack-dashboard-controller1.tar.gz

[ctrl-02] # grep "172" ./* -R

./local_settings:ALLOWED_HOSTS = ['172.31.7.101', 'openstack-vip.linux.local']

./local_settings:OPENSTACK_HOST = "172.31.7.101"

[ctrl-02] # vim local_settings

ALLOWED_HOSTS = ['172.31.7.102', 'openstack-vip.linux.local']

OPENSTACK_HOST = "172.31.7.102"

[ctrl-02] # systemctl restart httpd

[ctrl-02] # tail -f /var/log/httpd/*.log                       #日志中不能有任何报错

4、关闭haproxy上controller1节点的80端口,通过controller2节点80端口进行测试

---  http://172.31.7.102/dashboard             #浏览器访问,账号密码都可以用admin


2、结合lvs实现openstack的负载均衡

2.1 环境描述

1、keepalived 两台服务器

[KP-A] [KP-B]

2、web 两台服务器

[WEB-A]:192.168.10.21

[WEB-B]:192.168.10.50

3、openstack 控制端

[OPEN-CTRL]

4、VIP:192.168.10.88 (已经完成openstack各实例关联注册)

2.2 WEB端服务器安装 web 服务

1、WEB-A 操作

[WEB-A]# yum install httpd 

[WEB-A]# vim /var/www/html/index.html

<h1>192.168.10.21</h1>

[WEB-A]# systemctl restart httpd

2、WEB-B 操作

[WEB-B]# yum install httpd

[WEB-B]# vim /var/www/html/index.html

<h1>192.168.10.50</h1>

[WEB-B]# systemctl restart httpd

2.3 keepalived 安装

[KP-A]# yum install keepalived ipvsadm -y

[KP-B]# yum install keepalived ipvsadm -y

2.4 配置 keepalived并启动验证

1、[KP-A]端配置

[KP-A]# cat /etc/keepalived/keepalived.conf

vrrp_sync_group VIP-1 { group {

VIP-1

}

}

vrrp_instance VIP-1 {

state MASTER

interface eth0

virtual_router_id 1

priority 100

advert_int 3

authentication {

auth_type PASS

auth_pass 123456

}

virtual_ipaddress {

192.168.10.88 dev eth0 label eth0:1

}

}

#Nginx service virtual_server

virtual_server 192.168.10.88 80 {

delay_loop 6          

lb_algo wrr            

lb_kind DR            

protocol TCP         

real_server 192.168.10.21 80 {

weight 1                 

TCP_CHECK {

connect_timeout 5 

nb_get_retry 3 

delay_before_retry 3 

connect_port 80 

}

}

real_server 192.168.10.50 80 {

weight 1 TCP_CHECK {

connect_timeout 5

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

[KP-A]# systemctl restart keepalived

[KP-A]# systemctl enable keepalived

[KP-A]# ipvsadm -L -n

2、[KP-B]端配置

[KP-B]# cat /etc/keepalived/keepalived.conf 

vrrp_sync_group VIP-1 { group {

VIP-1

}

}

vrrp_instance VIP-1 {

state BACKUP

interface eth0

virtual_router_id 1

priority 80

advert_int 3

authentication {

auth_type PASS

auth_pass 123456

}

virtual_ipaddress {

192.168.10.88 dev eth0 label eth0:1

}

}

#Nginx service virtual_server

virtual_server 192.168.10.88 80 {

delay_loop 6          

lb_algo wrr            

lb_kind DR            

protocol TCP

real_server 192.168.10.21 80 {

weight 1                 

TCP_CHECK {

connect_timeout 5 

nb_get_retry 3 

delay_before_retry 3 

connect_port 80 

}

}

real_server 192.168.10.50 80 {

weight 1 TCP_CHECK {

connect_timeout 5

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

[KP-B]# systemctl restart keepalived

[KP-B]# systemctl enable keepalived

[KP-B]# ipvsadm -L -n

2.5 各服务器绑定VIP

1、WEB各服务器均绑定VIP并启动

[WEB]# chmod a+x lvs-dr.sh

[WEB]# cat lvs-dr.sh

#!/bin/sh

#LVS DR 模式初始化脚本

LVS_VIP=192.168.10.88

source /etc/rc.d/init.d/functions

case "$1" in

start)

/sbin/ifconfig lo:0 $LVS_VIP netmask 255.255.255.255 broadcast $LVS_VIP

/sbin/route add -host $LVS_VIP dev lo:0

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

sysctl -p >/dev/null 2>&1

echo "RealServer Start OK"

;;

stop)

/sbin/ifconfig lo:0 down

/sbin/route del $LVS_VIP >/dev/null 2>&1

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

echo "RealServer Stoped"

;;

*)

echo "Usage: $0 {start|stop}"

exit 1

esac

exit 0

[WEB]# bash lvs-dr.sh start

[WEB]# ipvsadm -L -n –stats


2、openstack控制端绑定VIP

[OPEN-CTRL]# chmod a+x lvs-dr.sh

[OPEN-CTRL]# cat lvs-dr.sh

#!/bin/sh

#LVS DR模式初始化脚本

LVS_VIP=192.168.10.88

source /etc/rc.d/init.d/functions

case "$1" in

start)

 /sbin/ifconfig lo:0 $LVS_VIP netmask 255.255.255.255 broadcast $LVS_VIP

 /sbin/route add -host $LVS_VIP dev lo:0

 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

 echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

 echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

 echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

 sysctl -p >/dev/null 2>&1

 echo "RealServer Start OK"

 ;;

stop)

 /sbin/ifconfig lo:0 down

 /sbin/route del $LVS_VIP >/dev/null 2>&1

 echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

 echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

 echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

 echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

 echo "RealServer Stoped"

 ;;

*)

 echo "Usage: $0 {start|stop}"

 exit 1

esac

exit 0

[OPEN-CTRL]# bash lvs-dr.sh start 

[OPEN-CTRL]# ipvsadm -L -n –stats

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352