OpenStack实践(五):Linux Bridge方式实现Load Balance
环境:
openstack版本 | pike |
控制节点主机 | openstack-controller(ubuntu 16.04.5) 172.27.34.37 |
计算节点主机 | openstack-computer(ubuntu 16.04.5) 172.27.34.38 |
vlan100 | centos01(172.27.100.17)、centos02(172.27.100.11) |
ubuntu安装详见:Ubuntu16.04.5以lvm方式安装全记录
openstack安装详见:OpenStack实践(一):Ubuntu16.04下DevStack方式搭建p版OpenStack
拓扑图:
目标:
外网pc访问Load Balancers ip 172.27.34.11,会轮询访问后端web服务器
本文目录:
一、新建vlan
二、新建实例centos01
三、配置安全组
四、配置float ip
五、新建实例centos02
六、配置lbaas
一、新建vlan
1.配置ml2_conf.ini
主备机同时配置ml2_conf.ini
stack@openstack-controller:~$ view /etc/neutron/plugins/ml2/ml2_conf.ini[ml2]tenant_network_types = vlanextension_drivers = port_securitymechanism_drivers = openvswitch,linuxbridgetype_drivers = local,flat,vlan,gre,vxlan,geneve[ml2_type_vlan]network_vlan_ranges = vlan:3001:4000[linux_bridge]physical_interface_mappings = vlan:ens192
2.重启neutron
stack@openstack-controller:~$ sudo systemctl restart devstack@q*
3.创建vlan100
stack@openstack-controller:/tmp$ openstack network create --provider-physical-network vlan --provider-network-type vlan --project admin vlan100
4.创建子网
创建子网subnet172.27.100.0
stack@openstack-controller:/tmp$ openstack subnet create --network vlan100 --subnet-range 172.27.100.0/24 --gateway 172.27.100.1 subnet172.27.100.0
5.查看创建的网络
二、创建实例centos01
1.上传介质
上传介质CentOS-7-x86_64-GenericCloud-1503.qcow2c至/tmp目录,下载地址:http://cloud.centos.org/centos/7/images/
2.制作镜像
root@openstack-controller:~# su - stackstack@openstack-controller:~$ source devstack/openrc admin adminstack@openstack-controller:/tmp$ openstack image create "centos7" --file CentOS-7-x86_64-GenericCloud-1503.qcow2c --disk-format qcow2 --container-format bare --public
3.新建秘钥centos
使用stack用户分别新建秘钥对centos
stack@openstack-controller:~/key$ ssh-keygen -t rsa -f centos.keystack@openstack-controller:~/key$ more centos.pub
4.导入秘钥
将公钥导入
创建实例后,使用私钥来登录实例
5.查看实例类型
stack@openstack-controller:~$ nova flavor-list
实例类型选择m1.small
6.查看镜像
stack@openstack-controller:~$ glance image-list
选择centos7
7.查看主机名和zone
stack@openstack-controller:~$ nova service-list
本文选择控制节点luanch实例
8.查看网络
stack@openstack-controller:~$ openstack network list
选择新建的vlan100
9.查看密钥对
stack@openstack-controller:~/key$ nova keypair-list
新建的实例centos01使用秘钥centos
10.新建实例centos01
stack@openstack-controller:~/key$ nova boot --flavor m1.small --image centos7 --availability-zone nova:openstack-controller --nic net-name=vlan100 --key-name centos centos01
11.查看新建实例
三、新建安全组
1.编辑默认安全组
2.新增规则
新增规则允许ping、ssh和80端口访问
四、配置float ip
外网访问配置
1.配置ml2_conf.ini
控制节点配置ml2_conf.ini
stack@openstack-controller:~$ view /etc/neutron/plugins/ml2/ml2_conf.ini[ml2_type_flat]flat_networks = externaltt[ml2_type_vlan]network_vlan_ranges = vlan:3001:4000[linux_bridge]physical_interface_mappings = vlan:ens192,externaltt:ens224
2.重启网络
stack@openstack-controller:~$ sudo systemctl restart devstack@q*
由于本文外网环境为flat网络(物理机的网卡接在交换机的access口),此处外网配置选择flat,对应网卡ens224,虚拟机内网为vlan,对应网卡ens192。
3.创建ext_net_flat
4.创建子网
5.不勾选dhcp
6.查看创建的外网
172.27.34.0该网段需能访问外网。
新建路由
1.新建路由router100
外部网络选择ext_net_flat,将外网连接至虚拟路由器
此时会新增接口,ip为172.27.34.6
2.新增接口
创建floating ip
1.分配浮动ip
floating ip提供静态NAT功能,配置在router提供网关的外网interface上。
2.关联实例
创建浮动ip172.27.34.4,并分别与实例centos01关联
五、新建实例centos02
实例centos02以centos01快照方式启动
配置实例centos01
1.登陆centos01
登陆实例并修改密码
stack@openstack-controller:~/key$ sudo ssh -i centos.key centos@172.27.34.4
2.修改配置文件sshd_config
[root@centos01 ~]# view /etc/ssh/sshd_configPermitRootLogin yesPasswordAuthentication yes
3.重启sshd
[root@centos01 ~]# service sshd restartRedirecting to /bin/systemctl restart sshd.service
此时可以远程访问实例了
4.关闭selinux
[root@centos01 ~]# setenforce 0[root@centos01 ~]# sed -i 's/^ *SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
重启后永久生效
5.配置源
[root@centos01 ~]# yum -y install wget[root@centos01 ~]# cd /etc/yum.repos.d/[root@centos01 yum.repos.d]# mkdir repo_bak && mv *.repo repo_bak/[root@centos01 yum.repos.d]# wget http://mirrors.aliyun.com/repo/Centos-7.repo
6.安装apache服务并配置
[root@centos01 ~]# yum -y install httpd[root@centos01 ~]# systemctl start httpd[root@centos01 ~]# systemctl enable httpd[root@centos01 ~]# echo web01-172.27.100.17 >/var/www/html/index.html
7.访问centos01
访问http://172.27.34.4/
创建实例centos02
1.创建快照
根据实例centos01创建快照centos
2.由镜像启动实例
由镜像centos启动实例centos02
网络、实例类型等和centos01保持一致
3.配置centos02
参照centos01配置,关联vip,连接centos02进行相关配置
4.访问centos02
访问http://172.27.34.5/
六、配置lbaas
查看Octavia服务
本文以Octavia方式实现lbaas,从Pike版本开始,Octavia就可以作为独立的Keystone服务而不再是Neutron的一个service plugin。
stack@openstack-controller:~$ openstack service list
Load Balancers配置
1.创建Load Balancers
新建Load Balancer 4,子网选择内网subnet172.27.100.0
2.配置Listener
Listener的协议选择HTTP,端口默认为80
3.配置Pool
Pool的方法为round_robin
4.加入pool members
将centos01和centos02加入pool
5.新建monitor
6.分配浮动ip
将浮动ip172.27.34.11分配给load balance做vip
7.查看新建的Load Balancers
查看vip
查看实例
8.访问测试
在计算节点访问vip
root@openstack-computer:~# for i in {1..10};do sleep 5; curl http://172.27.34.11; done
访问vip,发现以轮询方式分别访问后端的web服务器,结果符合预期。