教你如何在linux服务器上添加虚拟网卡

教你如何在linux服务器上添加虚拟网卡,第1张

有时候,一台服务器需要设置多个ip,但又不想添加多块网卡,那就需要设置虚拟网卡.这里介绍几种方式在linux服务器上添加虚拟网卡. 我们向eth0中添加一块虚拟网卡: 第一种方法:快递创建删除虚拟网卡 sudo ifconfig eth0:0 192.168.10.10 up 以上的命令就可以在eth0网卡上创建一个叫eth0:0的虚拟网卡,他的地址是:192.168.1.63 如果不想要这个虚拟网卡了,可以使用如下命令删除: sudo ifconfig eth0:0 down 重启服务器或者网络后,虚拟网卡就没有了. hzhsan:但是发现添加的虚拟网卡和原网卡物理地址是一样的。 第二种方法:修改网卡配置文件 在ubuntu下,网卡的配置文件是/etc/network/interfaces,所以我们修改它: sudo vim /etc/network/interfaces 在这个文件中增加如下内容并保存: auto eth0:0 iface eth0:0 inet static address 192.168.10.10 netmask 255.255.255.0 #network 192.168.10.1 #broadcast 192.168.1.255 保存后,我们需要重启网卡(重新加载配置文件)才会生效,使用如下命令重启: sudo /etc/init.d/networking restart 他的优点是重启服务器或者网卡配置不会丢失。 在linux中虚拟网卡的方法 第三种方法:创建tap 前两种方法都有一个特点,创建的网卡可有不同的ip地址,但是Mac地址相同。无法用来创建虚拟机。 添加虚拟网卡tap tunctl -b 附上相关命令简介: 显示网桥信息 brctl show 添加网桥 brctl addbr virbr0 激活网桥 ip link set virbr0 up 添加虚拟网卡tap tunctl -b tap0 ------->执行上面使命就会生成一个tap,后缀从0,1,2依次递增 激活创建的tap ip link set tap0 up 将tap0虚拟网卡添加到指定网桥上。 brctl addif br0 tap0 给网桥配制ip地址 ifconfig virbr1 169.254.251.4 up 将virbr1网桥上绑定的网卡eth5解除 brctl delif virb1 eth5 给virbr1网桥添加网卡eth6 brctl addif virbr1 eth6

UStack 为所有用户提供可靠、安全的云服务,但是如果用户希望在其上实现更加高可用的虚拟机来保证一些关键业务,在 UStack 上也同样可以方便快捷的完成。

@陈沙克 在他的博客里曾讲述了如何在 UStack 上通过 API 使用 Allowed address pairs,这里我们将同样通过 Allowed address pairs 来实现 VRRP 完成虚拟机的高可用。

VRRP 全称虚拟路由器冗余协议,通过 VRRP 我们可以将一些虚拟机配成一个备份组,然后指定一个 master 节点,当 master 节点失效时,备份组将会根据 VRRP 协议进行选举,选举后一个 slave 节点将代替原失效的 master 节点对外提供服务,在提高可靠性的同时,简化了主机的配置,避免了单点故障,是常见的高可用方案。

实现 VRRP 协议,我们可以使用开源的 keepalived 软件,优点是配置简单,功能也颇为强大,下面我就以 keepalived 来实现一个简单的双机热备对外提供 HTTP 服务。

在 UStack 上建立环境

创建虚拟网络与云主机

首先我们建立一个 VRRP 用的网络和子网,且将其命名为 vrrp-net 和 vrrp-subnet(10.10.0.0/24),然后在上面建立两个虚拟机,我将其命名为 vrrp-node-1(10.10.0.4)和 vrrp-node-2(10.10.0.5)。

两个节点都没有分配浮动 IP,只是将其通过一个 router 连接到外网,为了能够 ssh 登录到这两个虚拟机,我们可以在路由器上设置转发规则,指向各自的 22 端口,方便我们管理。

创建公网IP和虚拟网卡

然后我们需要申请一个公网 IP 作为这两个虚拟机对外服务的出口 IP,当然,如果你的虚拟机不需要对外提供服务的话就不必申请公网 IP 了。

再在 vrrp-subnet 上新建一个虚拟网卡,只需要进入左侧边栏”虚拟数据中心”的“虚拟网卡”,再点击“新建虚拟网卡”,在“选择子网”里选择 vrrp-subnet,我们可以在这里指定一个 IP,比如 10.10.0.200,再指定一个名字,比如 vrrp-port。

通过 API 实现高级控制

下面我们需要将前面申请的公网 IP 关联到这个虚拟网卡上,这个操作我们目前不支持在界面上操作,需要用 API 完成,首先我们做一些准备工作。

准备工作

1. 记录 Floating IP 的 UUID、两个虚拟机上的虚拟网卡的 UUID 和 vrrp-port 的 UUID:Floating IP 的 UUID 可以在”公网 IP“页点开具体的 IP 即可看到,虚拟网卡的 UUID 则是在“虚拟数据中心”的“虚拟网卡”页里,通过“关联云主机”这一栏去查这个虚拟网卡属于哪个云主机,然后点击这个虚拟网卡,记录其 UUID。

2. 记录你的 User ID 和 Project ID:在 UOS 的 API中,每个用户都用其 User ID 和 Project ID 来做识别和资源的隔离,这两个 ID 可以将鼠标悬停在右上角后点击“个人设置”查看。

获得 Token

下面就可以进入 API 的操作了,首先获取一个 token:

curl -i -X POST https://identity.api.ustack.com/v3/auth/tokens \

-H "Content-Type: application/json" \

-H "Accept: application/json" \

-d '{"auth": {"scope": {"project": {"id": "{PROJECT_ID}"}}, "identity": {"password": {"user":{ "password": "{PASSWORD}", "id": "{USER_ID}"}}, "methods": ["password"]}}}'

复制代码

注意将里面的 {PROJECT_ID}、{PASSWORD}、{USER_ID} 替换成你自己的真实信息,下面的命令也做类似处理。

在终端运行后,我们可以获得一个 token:

图中第一个红框部分为我们输入的代码,第二个红框部分为我们获得的 Token,接下来每一步都需要用到这个 Token,请记住这个 Token。

将公网 IP 绑定到虚拟网卡

首先我们将前边的 Floating IP 绑定到 vrrp-port 上:

curl -s -X PUT https://bj1.network.api.ustack.com/v2.0/floatingips/{FLOATING_IP_UUID} \

-H "X-Auth-Token: {TOKEN}" \

-H "Content-Type: application/json" \

-H "Accept: application/json" \

-d '{"floatingip": {"port_id": "{VRRP-PORT-UUID}"}}'

复制代码

将其中的 {FLOATING_IP_UUID}、{TOKEN}、{VRRP-PORT-UUID} 换成我们前面查的真实的 UUID。

第一个红框内为运行的 curl 命令,第二个红框内可以看到“Fixed IP”已经成功变成 vrrp-port 的 IP 了。或者进入Ustack控制台 ,此时应能看到本来 “Available” 的公网 IP 此时已变成了 “In Use”

添加 Allowed address pairs

然后我们再添加 Allowed address pairs:

curl -s -X PUT https://bj1.network.api.ustack.com/v2.0/ports/{NODE-1-PORT-UUID} \

-H "X-Auth-Token: {TOKEN}" \

-H "Content-Type: application/json" \

-H "Accept: application/json" \

-d '{"port": {"allowed_address_pairs": [{"ip_address": "{VRRP-FLOATING-IP}"}]}}'

复制代码

将其中的 {NODE-1-PORT-UUID}、{TOKEN}、{VRRP-FLOATING-IP} 换成我们前面查的真实的 UUID。改完 Node-1 后同样处理 Node-2 即可。

第一个红框内为运行的 curl 命令,第二个红框内可以看到“allowed address pairs”已经成功变成了 vrrp-port 的 IP 了。

至此,UOS 上的准备就完成了,下面我们 ssh 到虚拟机去配置 keepalived。

配置虚拟机

配置 keepalived

keepalived 的配置可以做很多,他可以用来做3层及以上的高可用(TCP Check、HTTP Get、SSL Get、MISC Check), 参考 Keepalived 的 User Guide,里面详细介绍了 Keepalived 的使用方法。这里我们不做详细的 Health check,仅保证虚拟机连接正常,即当虚拟机网络断开时将流量切换到其他虚拟机。

首先在节点中安装 keepalived:

sudo apt-get install keepalive

复制代码

然后是 Master 节点的设置:

$ cat /etc/keepalived/keepalived.conf

vrrp_instance vrrp_group_1 {

state MASTER

interface eth0

virtual_router_id 1

priority 100

authentication {

auth_type PASS

auth_pass password

}

virtual_ipaddress {

10.10.0.200/24 brd 10.0.0.255 dev eth0

}

}

复制代码

Slave 节点的设置:

$ cat /etc/keepalived/keepalived.conf

vrrp_instance vrrp_group_1 {

state BACKUP

interface eth0

virtual_router_id 1

priority 50

authentication {

auth_type PASS

auth_pass password

}

virtual_ipaddress {

10.10.0.200/24 brd 10.0.0.255 dev eth0

}

复制代码

修改完配置后需要重启 keepalived:

service keepalived restart

复制代码

配置 Apache

为了演示高可用,我们需要安装一个 Web 服务器,比如 Apache:

sudo apt-get install apache2

复制代码

分别将两个虚拟机的主页设置成 “VRRP-node1″ 和 “VRRP-node2″:

$ sudo echo "VRRP-node1" >/var/www/index.html

$ sudo echo "VRRP-node2" >/var/www/index.html

复制代码

验证高可用

此时我们尝试访问 42.62.73.143:

$ curl 42.62.73.143

VRRP-node1

复制代码

现在我们让 VRRP-node1 的“虚拟网卡”转为关闭状态,这个可以通过设置虚拟网卡的 admin_state_up 来实现:

curl -s -X PUT https://bj1.network.api.ustack.com/v2.0/ports/{NODE-1-PORT-UUID} \

-H "X-Auth-Token: {TOKEN}" \

-H "Content-Type: application/json" \

-H "Accept: application/json" \

-d '{"port": {"admin_stat_up": [{"ip_address": "false"}]}}'

复制代码

再尝试访问 42.62.73.143:

$ curl 42.62.73.143

VRRP-node2

复制代码

此时 respone 已由 VRRP-node2 来发出了。

这个问题 我其实三个月前已经解决了,但是那云服务器内存实在太小,后来重新安装了一个centos镜像用了,但是没有可视化界面的确不好操作。

因为那电脑是99买的学生优惠 1H2G内存。再装虚拟机就直接暴毙了,卡的要死。

不过装了CENTOS后还是很好用的,这点还是点个赞,对了我在华为买的。

说下重点的吧

坑一:双核以上包括双核的虚拟机,记住了创建虚拟机时候先选择256内存,单核,记住这个配置。不然肯定会报无法虚拟化。

坑二:请使用VMBOX这个软件,vmware就不要想了 啥版本都用不了。

坑三:启动不了要看看系统说明那里是不是显示kvm半架构,只要是这个就肯定能成功,只是你选的某些选项不对。

百度的都是一些物理机器然后不能安装,要你重启BIOS设置啥的,很明显,我们云服务器不存在这个东西。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/668295.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-26
下一篇2023-07-26

发表评论

登录后才能评论

评论列表(0条)

    保存