我有一个负载平衡器(见下面的状态),我想删除。我已经删除了它池中的实例。完全公开:这是在我重新启动的Dev堆栈上,在那里我手动重新创建了lb-mgmt网络路由。在重启之后,我可能忽略了一个细节。负载平衡器在重新启动之前工作。
删除负载平衡器的第一步是删除其池成员。这样做失败的原因如下:
$ alias olb='openstack loadbalancer'
$ olb member delete website-pool 08f55..
Load Balancer 1ff... is immutable and cannot be updated. (HTTP 409)
,我能做些什么使它变?
下面,请参阅负载平衡器在重新创建o-hm0路由并重新启动amphora之后的状态。它的配置状态是错误的,但是根据API,这应该使我能够删除它:
$ olb status show kubelb
{
"loadbalancer": {
"id": "1ff7682b-3989-444d-a1a8-6c91aac69c45",
"name": "kubelb",
"operating_status": "ONLINE",
"provisioning_status": "ERROR",
"listeners": [
{
"id": "d3c3eb7f-345f-4ded-a7f8-7d97e3af0fd4",
"name": "weblistener",
"operating_status": "ONLINE",
"provisioning_status": "ACTIVE",
"pools": [
{
"id": "9b0875e0-7d16-4ebc-9e8d-d1b90d4264a6",
"name": "website-pool",
"provisioning_status": "ACTIVE",
"operating_status": "ONLINE",
"members": [
{
"id": "08f55bba-260a-4b83-ad6d-f9d6b44f0e2c",
"name": "",
"operating_status": "NO_MONITOR",
"provisioning_status": "ACTIVE",
"address": "172.16.0.21",
"protocol_port": 80
},
{
"id": "f7665e90-dad0-480e-8ef4-65e0a042b9fa",
"name": "",
"operating_status": "NO_MONITOR",
"provisioning_status": "ACTIVE",
"address": "172.16.0.22",
"protocol_port": 80
}
]
}
]
}
]
}
}
发布于 2020-12-02 19:12:43
当负载均衡器处于错误状态时,有两个选项:
在Octavia,运行状态是一种测量/观察状态。如果他们不上网,可能会出现lb-mgmt的网络配置问题,而健康心跳消息(UDP 5555)没有返回到健康管理器控制器。
尽管如此,在重新启动之后,dev堆栈并不是要工作的设置。具体来说,中子和网络接口将处于不适当的状态。正如您已经发现的,您可以手动地重新配置这些,并且通常可以让事情再次正常工作。
发布于 2020-10-03 04:24:56
如果我理解文档和源代码的正确性,在供应状态错误中的负载平衡器可以被删除,但不能修改。不幸的是,它只能在其池和侦听器被删除之后才能被删除,这将修改负载均衡器。在我看来是鸡和蛋的问题。我“解决”了这个问题,从零开始重新创建了云。我想我也可以清理数据库。
对stack.sh日志文件的分析显示,要使Devstack重新启动,还需要一些额外的步骤。让奥克塔维亚做好准备:
在这一点上,我觉得我可以重新启动Dev堆栈,并且仍然有正常的负载平衡器。奇怪的是,所有负载平衡器的operating_status (以及它们的侦听器和池的operating_status)都是脱机的。然而,这并不妨碍他们工作。我还没有找到如何在网上做到这一点。
如果有人感兴趣,下面是我在重新启动Dev堆栈之后使用的脚本。此外,我还更改了Netplan配置,以便br-ex获得服务器的IP地址(更深一步)。
还原-开发堆栈脚本:
$ cat restore-devstack
source ~/devstack/openrc admin admin
if losetup -a | grep -q /opt/stack/data/stack-volumes
then echo loop devices are already set up
else
sudo losetup -f --show --direct-io=on /opt/stack/data/stack-volumes-default-backing-file
sudo losetup -f --show --direct-io=on /opt/stack/data/stack-volumes-lvmdriver-1-backing-file
echo restarting Cinder Volume service
sudo systemctl restart devstack@c-vol
fi
sudo lvs
openstack volume service list
echo
echo recreating /var/run/octavia
sudo mkdir /var/run/octavia
sudo chown stack /var/run/octavia
echo
echo setting up the o-hm0 interface
if ip l show o-hm0 | grep -q 'state DOWN'
then sudo ip l set o-hm0 up
else echo o-hm0 interface is not DOWN
fi
HEALTH_IP=$(openstack port show octavia-health-manager-standalone-listen-port -c fixed_ips -f yaml | grep ip_address | cut -d' ' -f3)
echo health monitor IP is $HEALTH_IP
if ip a show dev o-hm0 | grep -q $HEALTH_IP
then echo o-hm0 interface has IP address
else sudo ip a add ${HEALTH_IP}/24 dev o-hm0
fi
HEALTH_MAC=$(openstack port show octavia-health-manager-standalone-listen-port -c mac_address -f value)
echo health monitor MAC is $HEALTH_MAC
sudo ip link set dev o-hm0 address $HEALTH_MAC
echo o-hm0 MAC address set to $HEALTH_MAC
echo route to loadbalancer network:
ip r show 192.168.0.0/24
echo
echo fix netfilter for Octavia
sudo iptables -A INPUT -i o-hm0 -p udp -m udp --dport 20514 -j ACCEPT
sudo iptables -A INPUT -i o-hm0 -p udp -m udp --dport 10514 -j ACCEPT
sudo iptables -A INPUT -i o-hm0 -p udp -m udp --dport 5555 -j ACCEPT
echo fix netfilter for Magnum
sudo iptables -A INPUT -d 192.168.1.200/32 -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -d 192.168.1.200/32 -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -d 192.168.1.200/32 -p tcp -m tcp --dport 9511 -j ACCEPT
Netplan配置:
$ cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
enp1s0:
dhcp4: no
br-ex:
addresses: [192.168.1.200/24]
nameservers: { addresses: [192.168.1.16,1.1.1.1] }
gateway4: 192.168.1.1
version: 2
https://stackoverflow.com/questions/64167213
复制相似问题