OpenStack octavia LB负载均衡基础

octavia

octavia 作为openstack的负载均衡方案,实现4层和7层的负载,自Pike版本替换了neutron自带的LB方案(Neutorn LBaaS)。

基本对象
  • loadbalancer:负载均衡器的服务对象,所有的配置、操作、客户端命令等等
  • vip:作用在loadbalancer上,用于外部对内部的业务集群的访问入口
  • listener:监听器对象就是一组负载规则,通过其配置外部对VIP访问的端口,算法,类型等等(haproxy的frontend 配置)
  • pool:后端业务真实服务器集群(haproxy的backend配置)
  • member:业务云服务器的统称(backend 配置中的一个 member)
  • Health monitor :周期性检查成员的状态,用于负载调度
  • L7 Policy :数据包转发动作
  • L7 Rule :数据包转发匹配域

frontend指的是前端,定义一系列监听套字节,接收客户端请求;backend指的是后端,定义一系列后端服务器,请求转发

在这里插入图片描述

组件
  • octavia_api:接收api请求,简单处理后转发给Worker
  • octavia_worker:完成整个LB功能,通过nova和octavia agent对amphora生命周期管理,neutron完成subnet的接入。
  • octavia_housekeeping:保障octavia运行,负责维护amphora备选池大小,清理数据库中amphora记录,更新amphora中的证书
  • octavia_health_manager:监控amphora状态(amphora与octavia_health_manager心跳),负责amphora故障转移

网络

  • manage-network:用于登入amphora云主机进行管理的网络
  • tenant-network :租户网络
  • vip-network:vip网络
    在这里插入图片描述

amphora
amphora是实现lb功能的云主机,负载均衡的载体,包含了amphora agent服务和实现底层lb底层功能的haproxy和keepalived。

镜像构建:https://github.com/openstack/octavia/tree/master/diskimage-create

在这里插入图片描述
1、知识点
amphora实现

  • octavia_worker与agent安全通讯(ca)
  • 定义心跳协议

基于flask+gunicorn实现amphora_agent_service(提供amphora agent API)

在这里插入图片描述

  1. amphora初始化状态只有一个接口就是manage-network,用于登入使用
  2. 创建amphora-haproxy命名空间,实现keepalived功能,地址配置是由vip-network提供
cat /usr/lib/systemd/system/octavia-keepalived.service 
[Unit]
Description=Keepalive Daemon (LVS and VRRP)
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
KillMode=process
ExecStart=/sbin/ip netns exec amphora-haproxy /usr/sbin/keepalived  -D -d -f /var/lib/octavia/vrrp/octavia-keepalived.conf -p /var/lib/octavia/vrrp/octavia-keepalived.pid
ExecReload=/bin/kill -HUP $MAINPID
PIDFile=/var/lib/octavia/vrrp/octavia-keepalived.pid
#keepalived 是在amphora-haproxy命名空间中运行

在这里插入图片描述
keepalived配置文件路径

  • check_script.sh 用于状态检测,提供地址漂移的依据
#!/bin/sh

status=0
for file in /var/lib/octavia/vrrp/check_scripts/*
do
  echo "Running check script: " $file
  sh $file
  status=$(( $status + $? ))
done
exit $status

在这里插入图片描述

  1. haproxy在创建监听器(listener)后启动服务

systemctl status haproxy-a6ffe831-861a-4956-b9ce-ae13545bd6d5.service
在这里插入图片描述
在这里插入图片描述
可以查看到haproxy配置文件

cat /var/lib/octavia/a6ffe831-861a-4956-b9ce-ae13545bd6d5/haproxy.cfg
# Configuration for test
global
    daemon
    user nobody
    log /dev/log local0
    log /dev/log local1 notice
    stats socket /var/lib/octavia/a6ffe831-861a-4956-b9ce-ae13545bd6d5.sock mode 0666 level user

defaults
    log global
    retries 3
    option redispatch
    timeout connect 5000
    timeout client 50000
    timeout server 50000

peers a6ffe831861a4956b9ceae13545bd6d5_peers
    peer Oo21ZS_S-5TtQEuuCxjr7Hn6-TE 192.168.1.6:1025
    peer 2iKM7qifw7QqBTZvEmYmG0ed0_k 192.168.1.9:1025


frontend a6ffe831-861a-4956-b9ce-ae13545bd6d5    #监听器配置
    option tcplog
    bind 192.168.1.8:22
    mode tcp
    default_backend d3107c81-8e0f-493c-b4df-c9bc8f63f7f9

backend d3107c81-8e0f-493c-b4df-c9bc8f63f7f9    #后端pool和member成员
    mode tcp
    balance leastconn
    timeout check 5s
    server 4bf01008-84a6-4a8d-a1c9-2e8f6f1d9163 192.168.1.10:22 weight 1 check inter 5s fall 3 rise 3   

amphora_client通过api PUT请求进行haproxy的配置更新和服务重启

  • PUT /0.5/listeners/0454ef72-e491-4b05-9c7d-fcba609c9771/a6ffe831-861a-4956-b9ce-ae13545bd6d5/haproxy 更新配置
  • PUT /0.5/listeners/a6ffe831-861a-4956-b9ce-ae13545bd6d5/reload 重启服务

在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值