虚机安装Linux网络配置的一些笔记(真机公网互通,集群节点互通)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 一个成熟的人没有任何职责,除了这个:寻找自己,坚定地成为自己,不论走向何方,都往前探索自己的路。——赫尔曼·黑塞《德米安》

我的需求:

记得最开始学Linux的时候,使用VM虚拟机安装,配置网络,希望可以和主机互通,同时希望可以访问外网,改配置文件,照着网上的博客,改了又改,捣鼓了好几天也弄不好。

我需要解决的问题:

后来工作了慢慢会了,而且网络的管理工具也变了,对于centos来讲,network.service变成了NetworkManager.service,配置方式更多的是通过命令,或者UI界面的方式去配置,一般不去修改配置文件了,这里和小伙伴讲解一下linux的网络配置,希望小伙伴们学的时候不会乱糟糟的改配置文件,同时对于虚拟网络类型有个大概的了解。

我是这样做的:

我们这里使用的linux的版本为 Centos 7 ,博文主要讲解:

  • Linu虚拟网络配置的常用方
  • Linxu常用的网络配置命令

一个成熟的人没有任何职责,除了这个:寻找自己,坚定地成为自己,不论走向何方,都往前探索自己的路。——赫尔曼·黑塞《德米安》
*

一、Linu虚拟网络配置的常用方式

1、桥接模式

1、为什么要叫桥接模式?

关于桥接模式,是设计模式的一种,了解过设计模式的小伙伴应该不陌生,这里简单回忆下,没有了解的直接忽略,不重要。

桥接模式,桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦,我们看一个java的Demo
在这里插入图片描述
使用相同的抽象类方法但是不同的桥接实现类,来画出不同颜色的圆
创建桥接实现接口DrawAPI.java
public interface DrawAPI {
   public void drawCircle(int radius, int x, int y);
}
创建实现了 DrawAPI 接口的实体桥接实现类。RedCircle.java,GreenCircle.java
public class RedCircle implements DrawAPI {
   @Override
   public void drawCircle(int radius, int x, int y) {
      System.out.println("Drawing Circle[ color: red, radius: "
         + radius +", x: " +x+", "+ y +"]");
   }
}
public class GreenCircle implements DrawAPI {
   @Override
   public void drawCircle(int radius, int x, int y) {
      System.out.println("Drawing Circle[ color: green, radius: "
         + radius +", x: " +x+", "+ y +"]");
   }
}
使用 DrawAPI 接口创建抽象类 Shape。Shape.java
public abstract class Shape {
   protected DrawAPI drawAPI;
   protected Shape(DrawAPI drawAPI){
      this.drawAPI = drawAPI;
   }
   public abstract void draw();  
}
创建实现了 Shape 抽象类的实体类。Circle.java
public class Circle extends Shape {
   private int x, y, radius;
 
   public Circle(int x, int y, int radius, DrawAPI drawAPI) {
      super(drawAPI);
      this.x = x;  
      this.y = y;  
      this.radius = radius;
   }
 
   public void draw() {
      drawAPI.drawCircle(radius,x,y);
   }
}
使用 Shape 和 DrawAPI 类画出不同颜色的圆。BridgePatternDemo.java
public class BridgePatternDemo {
   public static void main(String[] args) {
      Shape redCircle = new Circle(100,100, 10, new RedCircle());
      Shape greenCircle = new Circle(100,100, 10, new GreenCircle());

      redCircle.draw();
      greenCircle.draw();
   }
}

类比虚拟机网络连接这一块,linux系统联网是一个抽象行为,他需要网卡才可以和外部连接,那么网卡就是他的一个桥接接口,我们通过网卡的实现类来实现网络的互通,这里我们有两种网卡,真机的物理网卡, 虚机的虚拟网卡,所以有两个桥接实现类,通过桥接模式,我们解耦了联网这种抽象行为和具体网卡的联网实现。

2、桥接模式可以做什么

下面回到正题,我们要通过桥接模式,实现这样一个场景,就那我们常用的笔记本来说,我要通过笔记本上的无线网卡连接公网,然后通过虚机配置桥接模式,实现我的虚机可以ping通真机,也可以ping通公网,同时多个虚机可以ping通.
在这里插入图片描述

在实际的工作中,我们需要一个交换机可以完成这样的需求,VM的桥接模式帮我们虚拟了一个交换机,配置桥接模式后,我们虚机和真机就位于一个网段内,且掩码相同,彼此可以ping通。

在这里插入图片描述

虚机网卡 与 真机网卡 通过桥接实现;桥接物理网卡,相当于直连到 真机 所在网络;配置桥接模式后:

真机网卡信息,使用的无线网卡,ip为192.168.1.4
在这里插入图片描述

虚机网卡信息,linux网关查看,可以看出虚机的网络ip为:192.168.1.10

┌──[root@master]-[~]
└─$ ifconfig ens33 | head -2
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255
┌──[root@master]-[~]
└─$  route -n | grep ens33
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 ens33
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33
┌──[root@master]-[~]
└─$  route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 ens33
10.254.0.0      0.0.0.0         255.255.0.0     U     0      0        0 flannel.1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
┌──[root@master]-[~]
└─$
  • 网关第一行的意思就是去往所有目标地址数据包由网关192.168.1.1 通过网卡ens33来转发;0.0.0.0代表的是匹配所有目标地址
  • 网关第二行:意思就是去往10.254.0.0 地址的数据包通过flannel.1网桥设备来转发

在它显示的信息中,如果标志是 U,则说明是可达路由(活动的);如果是 G,则说明这个网络接口连接的是网关,H则说明目标是一个主机。

3. 桥接模式如何配置:

说了这么多,来具体操作一下,桥接模式到底要怎么配置:

&&&&&&&&&&&&&&&&&&配置网络步骤&&&&&&&&&&&&&&&&&&
桥接模式下,要自己选择桥接到哪个网卡(实际联网用的网卡),然后确认
在这里插入图片描述
配置网卡为DHCP模式(自动分配IP地址):执行方式见表尾,这里值得一说的是,如果网络换了,那么所以有的节点ip也会换掉,因为是动态的,但是还是在一个网段内。DNS和SSH免密也都不能用了,需要重新配置,但是如果你只连一个网络,那就没影响。所以一般需要在分配IP之后,把IP获取方式改成手动静态IP。当然你可以直接设置手动,但是要避免IP冲突
nmcli connection modify 'ens33' ipv4.method auto connection.autoconnect yes #将网卡改为DHCP模式(动态分配IP)nmcli connection up 'ens33'

配置网卡为DHCP模式(自动分配IP地址)


┌──[root@localhost.localdomain]-[~] 
└─$ nmcli connection modify 'ens33' ipv4.method auto   connection.autoconnect yes
┌──[root@localhost.localdomain]-[~] 
└─$ nmcli connection up 'ens33'
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
┌──[root@localhost.localdomain]-[~] 
└─$ ifconfig | head -2 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.7  netmask 255.255.255.0  broadcast 192.168.1.255
┌──[root@localhost.localdomain]-[~] 
└─$ 
┌──[root@192.168.1.7]-[~] 
└─$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.7  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::8899:b0c7:4b50:73e0  prefixlen 64  scopeid 0x20<link>
        inet6 240e:319:707:b800:2929:3ab2:f378:715a  prefixlen 64  scopeid 0x0<global>
        ether 00:0c:29:b6:a6:52  txqueuelen 1000  (Ethernet)
        RX packets 535119  bytes 797946990 (760.9 MiB)
        RX errors 0  dropped 96  overruns 0  frame 0
        TX packets 59958  bytes 4119314 (3.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 616  bytes 53248 (52.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 616  bytes 53248 (52.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:2e:66:6d  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

┌──[root@192.168.1.7]-[~] 
└─$ 

配置网卡为手动获取IP,即把DHCP分配的ip设置为静态IP,这一步在机器克隆完成后中每个机器执行

nmcli connection modify 'ens33' ipv4.method manual ipv4.addresses 192.168.1.7/24 ipv4.gateway 192.168.1.1 connection.autoconnect  yes
nmcli connection up 'ens33'

2、隔离模式

1、什么是隔离模式,隔离模式能做什么

关于隔离模式,顾名思义,就是虚机可以ping通真机上的上的其他虚机,也可以ping通真机,但是不能ping通外网。

这里如果小伙使用vm虚拟机,那么在装好系统以后会自动生成两个虚拟网卡,vmnet1和vmnet8
在这里插入图片描述
我们可以使用vmnet1或者vmnet8虚拟网卡来实现隔离模式的网络配置。
在这里插入图片描述

2、如何配置隔离模式

下面和小伙伴分享隔离模式如何配置
这里我们使用vmnet1 配置网络,配置虚拟网卡
在这里插入图片描述
设置网络为vmnet1
在这里插入图片描述
nmcli connection modify 'ens33' ipv4.method auto connection.autoconnect yes,nmcli connection up 'ens33',这里使用静态的也可以,一般也是设置成静态,这里为了方便.
静态配置方式,注意ip和掩码 nmcli connection modify 'ens33' ipv4.method manual ipv4.addresses 192.168.4.12/24 connection.autoconnect yes,nmcli connection up 'ens33'
到这里我们已经基于隔离模式配置好了网网络,虚机看看网卡信息,测试一下
在这里插入图片描述
这里如果不通的话,需要关闭真机的防火墙试试
在这里插入图片描述
在这里插入图片描述
嗯,然后做真机测试一下
在这里插入图片描述

虚机网卡配置

──[root@master]-[~] 
└─$ nmcli connection modify 'ens33' ipv4.method auto connection.autoconnect yes
┌──[root@master]-[~] 
└─$ nmcli connection up 'ens33'
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/8)
┌──[root@master]-[~] 
└─$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:5e:c9:7f brd ff:ff:ff:ff:ff:ff
    inet 192.168.5.128/24 brd 192.168.5.255 scope global noprefixroute dynamic ens33
       valid_lft 1798sec preferred_lft 1798sec
    inet 192.168.0.106/32 brd 192.168.0.106 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::8899:b0c7:4b50:73e0/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:2e:66:6d brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:2e:66:6d brd ff:ff:ff:ff:ff:ff
┌──[root@master]-[~] 
└─$ 
┌──[root@master]-[~] 
└─$ 

二、linxu常用的网络配置命令

1、配置静态主机名

linux主机名的配置在配置文件 /etc/hostname 这里需要注意的是 一般的命里提示服配置的都是-h即短的主机名,只会显示·前面的部分,要想全部显示,需要修改为-H

E:\docker>ssh  root@39.97.241.18
Last failed login: Thu Sep 16 19:46:40 CST 2021 from 47.106.250.53 on ssh:notty
There were 3 failed login attempts since the last successful login.
Last login: Thu Sep 16 17:48:01 2021 from 121.57.15.165

Welcome to Alibaba Cloud Elastic Compute Service !

How would you spend your life?.I don't know, but I will cherish every minute to live.
[root@liruilong ~]# echo liruilongs.github.io > /etc/hostname
[root@liruilong ~]# cat /etc/hostname
liruilongs.github.io
[root@liruilong ~]#
[root@liruilong ~]# echo liruilongs.github.io > /etc/hostname #重定向将主机名写入配置文件,重启系统后才会生效
[root@liruilong ~]# cat /etc/hostname #查看配置文件
liruilongs.github.io
##临时设置的主机名,重新开一个终端即可生效 Ctrl + Shift + T
[root@liruilong ~]# hostname liruilongs.github.io #临时设置主机名
[root@liruilong ~]# hostname #查看当前系统的主机名
liruilongs.github.io
[root@liruilong ~]#

2. NetworkManager

NetworkManager主要管理2个对象:Connection(网卡连接配置) 和 Device(网卡设备),他们之间是多对一的关系,但是同一时刻只能有一个Connection对于Device才生效。这里理解的话,我们要配置linux网络的话,主要就是使用的这个配置的。

RHEL 8/Centos 8 有四种方法配置网络:

  • 通过nmcli connection add命令配置,会自动生成ifcfg文件。我们上面用的就是这种。
  • 手动配置ifcfg文件,通过nmcli connection reload来加载生效。
  • 手动配置ifcfg文件,通过传统network.service来加载生效。
  • 通过nmtui 以图形化的方式配置

启动NetworkManager 服务

[root@liruilong ~]# nmcli connection show
Error: NetworkManager is not running.
[root@liruilong ~]# systemctl start  NetworkManager
[root@liruilong ~]# systemctl status  NetworkManager
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2021-09-16 21:30:52 CST; 7s ago
     Docs: man:NetworkManager(8)
 Main PID: 997 (NetworkManager)
    Tasks: 5
   Memory: 12.0M
   CGroup: /system.slice/NetworkManager.service
           ├─ 997 /usr/sbin/NetworkManager --no-daemon
           └─1005 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth0.pid -lf /var/lib/Ne...

Sep 16 21:30:52 liruilongs.github.io NetworkManager[997]: <info>  [1631799052.9624] dhcp4 (eth0):   nameserver '1...138'
Sep 16 21:30:52 liruilongs.github.io NetworkManager[997]: <info>  [1631799052.9625] dhcp4 (eth0): state changed u...ound
Sep 16 21:30:52 liruilongs.github.io NetworkManager[997]: <info>  [1631799052.9635] device (eth0): state change: ...me')
Sep 16 21:30:52 liruilongs.github.io NetworkManager[997]: <info>  [1631799052.9646] device (eth0): state change: ...me')
Sep 16 21:30:52 liruilongs.github.io NetworkManager[997]: <info>  [1631799052.9648] device (eth0): state change: ...me')
Sep 16 21:30:52 liruilongs.github.io NetworkManager[997]: <info>  [1631799052.9651] manager: NetworkManager state...SITE
Sep 16 21:30:52 liruilongs.github.io dhclient[1005]: bound to 172.17.57.70 -- renewal in 154114011 seconds.
Sep 16 21:30:52 liruilongs.github.io NetworkManager[997]: <info>  [1631799052.9767] device (eth0): Activation: su...ted.
Sep 16 21:30:52 liruilongs.github.io NetworkManager[997]: <info>  [1631799052.9770] manager: NetworkManager state...OBAL
Sep 16 21:30:52 liruilongs.github.io NetworkManager[997]: <info>  [1631799052.9774] manager: startup complete
Hint: Some lines were ellipsized, use -l to show in full.
[root@liruilong ~]#  

1、查看网络连接

使用 show 指令

  • nmcli connection show
  • nmcli connection show "连接名"
[root@liruilong ~]# nmcli connection show #显示网卡设备
[root@liruilong ~]# ifconfig | head -3 #查看网卡信息
[root@liruilong ~]# nmcli connection show ens33 #查看网卡的详细信息
[root@liruilong ~]# nmcli connection show
NAME             UUID                                  TYPE      DEVICE
System eth0      5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  ethernet  eth0
br-3e7fae020360  9fbbc0c9-8da1-482e-b443-014900ac1ec0  bridge    br-3e7fae020360
[root@liruilong ~]# ifconfig | head -3
br-3e7fae020360: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.19.0.1  netmask 255.255.0.0  broadcast 0.0.0.0
        ether 02:42:65:a1:d1:61  txqueuelen 0  (Ethernet)
[root@liruilong ~]# nmcli connection show "System eth0"
connection.id:                          System eth0
connection.uuid:                        5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              eth0
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
。。。。。。。

2、修改网络连接配置

使用 modify 指令

nmcli connection modify "连接名" 参数1 值1 ....

常用参数:

ipv4.method auo|manual
ipv4.addresses "IP地址/掩码长度"
ipv4.gateway 网关地址
connection.autoconnect yes | no

#给网卡ens33配置ip地址,子网掩码,网关,并配置开机自启动
[root@liruilong ~]# nmcli connection modify 'ens33' ipv4.method manual
ipv4.addresses 192.168.4.7/24 ipv4.gateway 192.168.4.254 connection.autoconnect
yes
[root@liruilong ~]# nmcli connection up 'ens33' #激活网卡
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@liruilong ~]# ifconfig | head -3 #查看网卡配置信息
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.4.7 netmask 255.255.255.0 broadcast 192.168.4.255
inet6 fe80::deea:10bb:4b70:a959 prefixlen 64 scopeid 0x20<link>
[root@liruilong ~]# route -n #查看网关
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.4.254 0.0.0.0 UG 100 0 0 ens33
192.168.4.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

3、激活/禁用网络连接

[root@liruilong ~]# nmcli connection up "ens33" #激活网卡ens33
[root@liruilong ~]# nmcli connection down "ens33" #取消激活网卡ens33

3.为本机指定 DNS 服务器

在配置文件配置,有时间小伙访问ip能够访问,但是访问域名却出了问题,这有可能是 DNS的问题,无法解析域名。

配置DNS服务器 在配置文件 /etc/resolv.conf 中,配置方式为 nameserver DNS服务器地址

[root@liruilong ~]# vim /etc/resolv.conf
nameserver 172.25.254.254 #设置DNS服务器地址
[root@liruilong ~]# echo nameserver 192.168.4.7 > /etc/resolv.conf
[root@liruilong ~]# cat /etc/resolv.conf
nameserver 192.168.4.7

network.service 的配置方式

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE="ens33" #驱动名称,与ifconfig 看到的名称一致
ONBOOT="yes" #开机启动
NM_CONTROLLED="yes" #接受 NetworkManager 控制
TYPE="Ethernet" #类型
BOOTPROTO="static" #协议(dhcp|static|none)
IPADDR="192.168.4.7" #IP地址
NETMASK="255.255.255.0" #子网掩码
GATEWAY="192.168.4.254" #默认网关
DNS1="8.8.8.8" #DNS地址为可选内容,主要用于连接外网
DNS2="8.8.4.4"
[root@room9pc01 ~]# systemctl restart network #重启网络

后记

关于linux的网络配置就讲到这里,当然,还有其他的配置方式,我们这里没有讲到,感兴趣的小伙伴赶快尝试吧!

相关文章
|
3月前
|
Linux 开发工具 Android开发
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是由Bilibili基于FFmpeg3.4研发并开源的播放器,适用于Android和iOS,支持本地视频及网络流媒体播放。本文详细介绍如何在新版Android Studio中导入并使用ijkplayer库,包括Gradle版本及配置更新、导入编译好的so文件以及添加直播链接播放代码等步骤,帮助开发者顺利进行App调试与开发。更多FFmpeg开发知识可参考《FFmpeg开发实战:从零基础到短视频上线》。
253 2
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
|
3月前
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
69 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
3月前
|
机器学习/深度学习 数据可视化 Windows
深度学习笔记(七):如何用Mxnet来将神经网络可视化
这篇文章介绍了如何使用Mxnet框架来实现神经网络的可视化,包括环境依赖的安装、具体的代码实现以及运行结果的展示。
62 0
|
9天前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
3月前
|
机器学习/深度学习 编解码 算法
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
MobileNetV3是谷歌为移动设备优化的神经网络模型,通过神经架构搜索和新设计计算块提升效率和精度。它引入了h-swish激活函数和高效的分割解码器LR-ASPP,实现了移动端分类、检测和分割的最新SOTA成果。大模型在ImageNet分类上比MobileNetV2更准确,延迟降低20%;小模型准确度提升,延迟相当。
88 1
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
|
3月前
|
机器学习/深度学习 网络架构 计算机视觉
目标检测笔记(一):不同模型的网络架构介绍和代码
这篇文章介绍了ShuffleNetV2网络架构及其代码实现,包括模型结构、代码细节和不同版本的模型。ShuffleNetV2是一个高效的卷积神经网络,适用于深度学习中的目标检测任务。
116 1
目标检测笔记(一):不同模型的网络架构介绍和代码
|
3月前
|
XML 开发工具 Android开发
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
ExoPlayer最初是为了解决Android早期MediaPlayer控件对网络视频兼容性差的问题而推出的。现在,Android官方已将其升级并纳入Jetpack的Media3库,使其成为音视频操作的统一引擎。新版ExoPlayer支持多种协议,解决了设备和系统碎片化问题,可在整个Android生态中一致运行。通过修改`build.gradle`文件、布局文件及Activity代码,并添加必要的权限,即可集成并使用ExoPlayer进行网络视频播放。具体步骤包括引入依赖库、配置播放界面、编写播放逻辑以及添加互联网访问权限。
196 1
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
|
3月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
71 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
3月前
|
编解码 人工智能 文件存储
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
YOLOv7是一种新的实时目标检测器,通过引入可训练的免费技术包和优化的网络架构,显著提高了检测精度,同时减少了参数和计算量。该研究还提出了新的模型重参数化和标签分配策略,有效提升了模型性能。实验结果显示,YOLOv7在速度和准确性上超越了其他目标检测器。
65 0
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
|
3月前
|
机器学习/深度学习 Python
深度学习笔记(九):神经网络剪枝(Neural Network Pruning)详细介绍
神经网络剪枝是一种通过移除不重要的权重来减小模型大小并提高效率的技术,同时尽量保持模型性能。
81 0
深度学习笔记(九):神经网络剪枝(Neural Network Pruning)详细介绍