[VIP] openstack环境配置VIP
描述
当你在openstack平台创建一个network,在这个network上创建两台虚拟机,当这两台虚拟机还需要VIP时,你从这个network分配一个地址做为VIP,配置到虚拟机上,你会发现这个VIP并不能被访问。因为在neutron中,从 VM 端口发送/接收的数据包必须具有该 VM 端口的固定 IP/MAC 地址,所以虚拟机的端口在创建时就会把IP/MAC进行了绑定。有这条规则存在,所以VIP 是无法与外部通信,但可以通过如下两个方法来解决。
- 方法1(推荐): 为需要使用VIP的虚拟机端口配置
allwed_address_pairs - 方法2: 为需要使用VIP的虚拟机端口
disable_secruity
openstack version: Train
方法1
allwed_address_pairs: 允许一个端口在该端口上添加额外的 IP/MAC 地址对,以允许与这些指定值匹配的流量, 使额外的IP能与外部通信。
安全组放通VRRP协议(可选)
keeplived场景下,虚拟机所在安全组放通VRRP协议,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议,可以认为是实现高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
# 找到虚拟机所在安全组的id(3a02e44f-d5bb-40de-99b5-f9467e456bc7)
$ openstack security group rule create 3a02e44f-d5bb-40de-99b5-f9467e456bc7 --protocol vrrp --ingress --remote-ip 0.0.0.0/0
$ openstack security group rule create 3a02e44f-d5bb-40de-99b5-f9467e456bc7 --protocol vrrp --egress --remote-ip 0.0.0.0/0
配置allwed_address_pairs
# 虚拟机端口和VIP都是使用这个network分配的IP
$ openstack network list
test_network a75d1c08-73d7-476e-be3a-37d4532672eb
# 从test_network创建一个VIP地址为:192.168.2.253 , 名字为:test-vip
$ neutron port-create test_network --allowed-address-pairs type=dict list=true ip_address=192.168.2.253 --name test-vip
+-----------------------+--------------------------------------------------------------------------------------+
| Field | Value |
+-----------------------+--------------------------------------------------------------------------------------+
| admin_state_up | True |
| allowed_address_pairs | {"ip_address": "192.168.2.253", "mac_address": "fa:16:3e:ab:0f:ad"} |
| binding:host_id | |
| binding:profile | {} |
| binding:vif_details | {} |
| binding:vif_type | unbound |
| binding:vnic_type | normal |
| created_at | 2022-02-26T13:57:15Z |
| description | |
| device_id | |
| device_owner | |
| extra_dhcp_opts | |
| fixed_ips | {"subnet_id": "4a7237fc-10a8-4a44-b711-57dfbcee569a", "ip_address": "192.168.2.237"} |
| id | 490ba237-649d-4a52-a923-fbad0c00702a |
| mac_address | fa:16:3e:ab:0f:ad |
| name | test-vip |
| network_id | a75d1c08-73d7-476e-be3a-37d4532672eb |
| port_security_enabled | True |
| project_id | a3f435fc08854b828b3346aa1581d39f |
| revision_number | 1 |
| security_groups | 3a02e44f-d5bb-40de-99b5-f9467e456bc7 |
| status | DOWN |
| tags | |
| tenant_id | a3f435fc08854b828b3346aa1581d39f |
| updated_at | 2022-02-26T13:57:15Z |
+-----------------------+--------------------------------------------------------------------------------------+
# 为需要使用VIP的虚拟机端口添加`allwed_address_pairs`属性。
# vm1 port_id=1bd248cb-a543-46a4-b4ae-8ec9f93ce713
# vm2 port_id=c454a763-2bed-4164-a725-e2ded705c942
$ neutron port-update 1bd248cb-a543-46a4-b4ae-8ec9f93ce713 --allowed-address-pairs type=dict list=true ip_address=192.168.2.253
$ neutron port-update c454a763-2bed-4164-a725-e2ded705c942--allowed-address-pairs type=dict list=true ip_address=192.168.2.253
# 查看端口下是否具有allowed_address_pairs属性。
$ openstack port show 1bd248cb-a543-46a4-b4ae-8ec9f93ce713 | grep allowed_address_pairs
| allowed_address_pairs | ip_address='192.168.2.253', mac_address='fa:16:3e:d1:0d:1d'
$ openstack port show c454a763-2bed-4164-a725-e2ded705c942 | grep allowed_address_pairs
| allowed_address_pairs | ip_address='192.168.2.253', mac_address='fa:16:3e:d1:0d:1d'
# 从vm端口删除allwed_address_pairss属性,也就是删除VIP。
$ openstack port unset 1bd248cb-a543-46a4-b4ae-8ec9f93ce713 --allowed-address ip-address='192.168.2.253',mac-address='fa:16:3e:d1:0d:1d'
方法2
删除port安全组
安全组: 连接到虚拟机实例的端口的所有传入和传出流量都被阻止(除非已应用“安全组相应规则”)
# 从test_network创建一个VIP地址为:192.168.2.253 , 名字为:test-vip
$ neutron port-create test_network --allowed-address-pairs type=dict list=true ip_address=192.168.2.253 --name test-vip
# 把VIP的端口安全组关闭掉(找到VIP端口的port id)
$ openstack port set --disable-port-security --no-security-group 490ba237-649d-4a52-a923-fbad0c00702a
# 把需要使用VIP的虚拟机端口安全组关闭掉(找到VM端口的port id)
$ openstack port set --disable-port-security --no-security-group 1bd248cb-a543-46a4-b4ae-8ec9f93ce713
$ openstack port set --disable-port-security --no-security-group c454a763-2bed-4164-a725-e2ded705c942
[VIP] openstack环境配置VIP的更多相关文章
- Centos7 Openstack - (第一节)基本环境配置
Centos7 install Openstack - (第一节)基本环境配置 我的blog地址:http://www.cnblogs.com/caoguo 根据openstack官方文档配置 官方文 ...
- 配置VIP地址
10.10.10.7 mysql主 redis从 10.10.10.8 mysql从 redis主 现游戏架构如上,游戏后端数据库配置集群.场景描述:若是一台服务器宕机之后,及时切换数据库保持业务 ...
- keepalived主备节点都配置vip,vip切换异常案例分析
原文地址:http://blog.51cto.com/13599730/2161622 参考地址:https://blog.csdn.net/qq_14940627/article/details/7 ...
- 安装配置好openstack环境的虚拟机,须要改动ip时,在数据库中同步改动ip的方法
感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免,欢迎指正. 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...
- Kolla 4.0.0环境下VIP无法迁移问题排查
VRRP无法切换VIP的问题分析: Keepalived的配置文件:/etc/kolla/keepalived/keepalived.conf当中,nopreempt选项是影响切换的因素之一,另一个因 ...
- Centos 7 搭建OpenStack 私有云——(1)基础环境配置
1.简介: OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目. OpenStack是一个开源的云计算管理 ...
- KingbaseES R6 集群手工配置VIP案例
经常有用户问,V8R6集群搭建时没有配置VIP,搭建完成后,如何添加VIP?以下向大家介绍下手动添加VIP 的过程. 一.操作系统环境 操作系统(UOS): root@uos01:~# cat /et ...
- Oracle 12cR1 RAC 在VMware Workstation上安装(上)—OS环境配置
Oracle 12cR1 RAC 在VMware Workstation上安装(上)-OS环境配置 1.1 整体规划部分 1.1.1 所需软件介绍 Oracle RAC不支持异构平台.在同一个集群 ...
- Spring Cloud:多环境配置、eureka 安全认证、容器宿主机IP注册
记录一下搭建 Spring Cloud 过程中踩过的一些坑,测试的东西断断续续已经弄了好多了,一直没有时间整理搭建过程,时间啊~时间~ Spring 版本 Spring Boot:2.0.6.RELE ...
随机推荐
- python分支结构与循环结构
python分支结构 一.if 单条件形式 # 年轻人的世界都不容易 age > 18 age = int(input("请输入您的年龄:")) # input()函数 模拟 ...
- 单片机main函数退出后发生什么——以stm32为例
STM32:main函数退出后发生什么? 我们都在说单片机要运行在无限循环里,不能退出,可退出之后会发生什么? 讨论STM32启动过程的文章数不胜数,可main函数结束之后会发生什么却少有讨论. 几日 ...
- Windows蓝牙失效超全攻略
新电脑蓝牙出现问题,我捣鼓了很久,历经九九八十一难得以修复,说一说我在网上看到的各种方法. 一个功能正常使用,需要经过一个又一个的步骤.任何一个地方出问题,都有可能造成蓝牙失效.以下方法按出现概率从大 ...
- Java 面试题史上最强整理
https://mp.weixin.qq.com/s/kJpRgfI3zT77XqMeRfmmQQ
- HttpServletRequest接口详解
般情况下,浏览器(客户端)通过 HTTP 协议来访问服务器的资源,Servlet 主要用来处理 HTTP 请求.Servlet 处理 HTTP 请求的流程如下: Servlet 容器接收到来自客户端的 ...
- Tomcat-如何创建动态的web工程及目录介绍
1,IDEA中如何创建动态web工程 (1)创建一个新模块 (2)选择你要创建什么类型的模块 (3)输入模块名,finish完成创建 创建成功如下图: 一般在WEB-INF下建一个lib目录 存放ja ...
- ddos攻击是什么,如何防御
DDoS(Distributed Denial of Service,分布式拒绝服务) 定义: 主要通过大量合法的请求占用大量网络资源,从而使合法用户无法得到服务的响应,是目前最强大.最难防御的攻击之 ...
- python小兵之时间模块
Python 日期和时间 Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间 ...
- Codeforces Round #740 Div. 2
题目跳转链接 A. Simply Strange Sort 题意 定义一个函数\(f_{i}\) : 如果\(a_i \ge a_{i+1}\) swap(\(a_i\) \(a_{i+1}\)) 定 ...
- Java8之Stream常用操作方式
哈喽!大家好,我是[学无止境小奇],一位热爱分享各种技术的博主! [学无止境小奇]的创作宗旨:每一条命令都亲自执行过,每一行代码都实际运行过,每一种方法都真实实践过,每一篇文章都良心制作过. [学无止 ...