当前位置: 首页 > news >正文

使用ansible命令部署k8s集群

1.部署ansible集群

使用python脚本一个简单的搭建ansible集群-CSDN博客

2.ansible命令搭建k8s:

1.主机规划:

节点IP地址操作系统配置
server192.168.174.150centos7.92G2核
client1192.168.174.151centos7.92G2核
client2192.168.174.152centos7.92G2核

ansible清单文件内容如下

[clients_all]
server
client1
client2
[clients_master]
server
[clients_client]
client1
client2

2.配置yum源:

  • 配置本地yum源:

    # name是设备名,path是挂载点,state=unmounted如果目标路径已经挂载了设备,将其卸载重新挂载
    ansible clients_all -m mount -a "src=/dev/cdrom path=/mnt/cdrom fstype=iso9660 opts=defaults state=mounted"
    # path是文件路径,line是要添加的行内容,insertafter=EOF是文件末尾添加,BOF是文件头部添加
    ansible clients_all -m lineinfile -a "path=/etc/fstab line='/dev/cdrom /mnt/cdrom iso9660 defaults  0  0' insertafter=EOF"
    ansible clients_all -m shell -a 'echo "" > /etc/yum.repos.d/centos-local.repo'
     path修改文件的路径,block添加的文本内容,多行用\n隔开,create如果没有文件就创建,marker=插入的前后标签,如果重新执行就是替换文本
    ansible clients_all -m blockinfile -a "path=/etc/yum.repos.d/centos-local.repo block='[centos7.9]\nname=centos7.9\nbaseurl=file:///mnt/cdrom\nenabled=1\ngpgcheck=0' create=yes marker='#{mark} centos7.9'"
    ansible clients_all -m shell -a "yum clean all && yum repolist"
  • 配置远程阿里源:

    ansible clients_all -m yum -a "name=wget"
    ansible clients_all -m get_url -a "dest=/etc/yum.repos.d/CentOS-Base.repo url=http://mirrors.aliyun.com/repo/Centos-7.repo"
    ansible clients_all -m shell -a "yum clean all && yum repolist"
  • 配置扩展源:

    ansible clients_all -m yum -a "name=epel-release"
    ansible clients_all -m shell -a "yum clean all && yum repolist"

3.安装必要工具:

ansible clients_all -m yum -a "name=bash-completion,vim,net-tools,tree,psmisc,lrzsz,dos2unix"

4.禁止防火墙和selinux:

  • 禁止使用selinux

    ansible clients_all -m selinux -a 'state=disabled'
  • 禁用iptables和firewalld服务,kubernetes和docker在运行中会产生大量的iptables规则,为了不让系统规则跟它们混淆,直接关闭系统的规则

    ansible clients_all -m service -a "name=firewalld state=stopped enabled=false"
    # 可能没有安装iptables服务
    
    ansible clients_all -m service -a "name=iptables state=stopped enabled=false"

5.时间同步:

  • 所有节点:

    ansible clients_all -m yum -a "name=chrony"
    ansible clients_all -m service -a "name=chronyd state=restarted enabled=true"
  • 修改master节点chrony.conf:

    ansible clients_master -m lineinfile -a "path=/etc/chrony.conf regexp='^#allow 192.168.0.0\/16' line='allow 192.168.174.0/24' backrefs=yes"
    ansible clients_master -m lineinfile -a "path=/etc/chrony.conf regexp='^#local stratum 10' line='local stratum 10' backrefs=yes"
  • 修改node节点chrony.conf

    ansible clients_client -m lineinfile -a "path=/etc/chrony.conf regexp='^server' state=absent"
    ansible clients_client -m lineinfile -a "path=/etc/chrony.conf line='server 192.168.174.150 iburst' insertbefore='^.*\bline2\b.*$'"

  • 所有节点:

    ansible clients_all -m service -a "name=chronyd state=restarted enabled=true"
    ansible clients_all -m shell -a "timedatectl set-ntp true"

  • 查看:

    [root@server ~]# ansible clients_client -m shell -a "chronyc sources -v"
    client2 | CHANGED | rc=0 >>
    210 Number of sources = 1
    ​.-- Source mode  '^' = server, '=' = peer, '#' = local clock./ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
    | /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
    ||                                                 .- xxxx [ yyyy ] +/- zzzz
    ||      Reachability register (octal) -.           |  xxxx = adjusted offset,
    ||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
    ||                                \     |          |  zzzz = estimated error.
    ||                                 |    |           \
    MS Name/IP address         Stratum Poll Reach LastRx Last sample               
    ===============================================================================
    ^* server                        3   6    17     6   +918us[+4722us] +/-  217ms
    client1 | CHANGED | rc=0 >>
    210 Number of sources = 1
    ​.-- Source mode  '^' = server, '=' = peer, '#' = local clock./ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
    | /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
    ||                                                 .- xxxx [ yyyy ] +/- zzzz
    ||      Reachability register (octal) -.           |  xxxx = adjusted offset,
    ||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
    ||                                \     |          |  zzzz = estimated error.
    ||                                 |    |           \
    MS Name/IP address         Stratum Poll Reach LastRx Last sample               
    ===============================================================================
    ^* server                        3   6    17     6   +961us[+4856us] +/-  217ms

6.禁用swap分区:

# backrefs=yes,当没有匹配到指定行则不做任何更改
ansible clients_all -m lineinfile -a "path=/etc/fstab regexp='^\/dev\/mapper\/centos-swap' line='#/dev/mapper/centos-swap swap                    swap    defaults        0 0' backrefs=yes"

7.修改linux的内核参数:

  • 编辑/etc/sysctl.d/kubernetes.conf,添加网桥过滤和地址转发功能

    # path修改文件的路径,block添加的文本内容,多行用\n隔开,create如果没有文件就创建,marker=插入的前后标签,如果重新执行就是替换文本
    ansible clients_all -m blockinfile -a "path=/etc/sysctl.d/kubernetes.conf block='net.bridge.bridge-nf-call-ip6tables = 1\nnet.bridge.bridge-nf-call-iptables = 1\nnet.ipv4.ip_forward = 1' create=yes marker='#{mark} kubernetes'"
  • 重新加载配置

    ansible clients_all -m shell -a "sysctl -p"
  • 加载网桥过滤模块

    ansible clients_all -m shell -a "modprobe br_netfilter"
  • 查看网桥过滤模块是否加载成功

    ansible clients_all -m shell -a "lsmod | grep br_netfilter"

8.配置ipvs功能:

  • 在kubernetes中service有两种代理模型,

    • 种是基于iptables的

    • 一种是基于ipvs

  • 两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块

  • 安装ipset和ipvsadm

    ansible clients_all -m yum -a "name=ipset,ipvsadm"
  • 添加需要加载的模块写入脚本文件:

    ansible clients_all -m blockinfile -a "path=/etc/sysconfig/modules/ipvs.modules block='#! /bin/bash\nmodprobe -- ip_vs\nmodprobe -- ip_vs_rr\nmodprobe -- ip_vs_wrr\nmodprobe -- ip_vs_sh\nmodprobe -- nf_conntrack_ipv4' create=yes marker='#{mark} ipvs'"
  • 为脚本文件添加执行权限

    ansible clients_all -m file -a "path=/etc/sysconfig/modules/ipvs.modules mode='0755'"   
  • 执行脚本文件

    ansible clients_all -m script -a "/bin/bash /etc/sysconfig/modules/ipvs.modules"
  • 查看对应的模块是否加载成功

    ansible clients_all -m shell -a "lsmod | grep -e ip_vs -e nf_conntrack_ipv4"
  • 重启linux服务

    ansible clients_all -m reboot

9.安装Docker:

  • 添加docker镜像到本地:

    ansible clients_all -m get_url -a "dest=/etc/yum.repos.d/docker-ce.repo url=http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo"
  • 然后输入命令:

    ansible clients_all -m shell -a "yum install -y --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7" 
  • 修改配置文件:

    ansible clients_all -m file -a "path=/etc/docker state=directory"
    #  Docker在默认情况下使用的Cgroup Driver为cgroupfs,而kubernetes推荐使用systemd来代替cgroupfs
    mkdir -p /etc/docker
    cat <<eof > /etc/docker/daemon.json
    {
    "storage-driver": "devicemapper",
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": ["https://ja9e22yz.mirror.aliyuncs.com"]
    }
    eof
    ansible clients_all -m copy -a "src=/etc/docker/daemon.json dest=/etc/docker/daemon.json"
    cat << eof > /etc/sysconfig/docker
    OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'
    eof
    ansible clients_all -m copy -a "src=/etc/sysconfig/docker dest=/etc/sysconfig/docker"
  • 重启,并设置开机自启:

    ansible clients_all -m service -a "name=docker state=restarted enabled=true"

10.安装k8s组件:

  • 配置k8syum仓库:

    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
    http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
    ansible clients_all -m copy -a "src=/etc/yum.repos.d/kubernetes.repo dest=/etc/yum.repos.d/kubernetes.repo"
  • 安装kubeadm、kubelet和kubectl

    组件说明
    kubeadm搭建kubernetes集群的工具
    kubelet负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器
    kubectl用来与集群通信的命令行工具。
    ansible clients_all -m shell -a "yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y"
  • 编辑/etc/sysconfig/kubelet,配置kubelet的cgroup

    cat <<eof > /etc/sysconfig/kubelet
    KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
    KUBE_PROXY_MODE="ipvs"
    eof
    ansible clients_all -m copy -a "src=/etc/sysconfig/kubelet dest=/etc/sysconfig/kubelet"
  • 设置kubelet开机自启

    ansible clients_all -m service -a "name=kubelet state=started enabled=true"

11.准备镜像集群:

  • 在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需镜像可以通过下面命令查看

    ansible clients_all -m shell -a "kubeadm config images list"
  • 下载镜像:此镜像在kubernetes的仓库中,由于网络原因,无法连接,下面提供了一种替代方案下载这些镜像

    cat << eof > kubernetes_images_install.yaml
    ---
    - hosts: clients_allgather_facts: novars:  images:  - kube-apiserver:v1.17.4  - kube-controller-manager:v1.17.4  - kube-scheduler:v1.17.4  - kube-proxy:v1.17.4  - pause:3.1  - etcd:3.4.3-0  - coredns:1.6.5  tasks:- name: 拉取镜像shell: docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/{{ item }}with_items: "{{ images }}"- name: 给镜像打标签shell: docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/{{ item }} k8s.gcr.io/{{ item }}with_items: "{{ images }}"- name: 删除镜像shell: docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/{{ item }}with_items: "{{ images }}"
    eof
    ansible-playbook kubernetes_images_install.yaml

12.集群初始化:

  • 在 master 节点:

    • 创建集群

      ansible clients_master -m shell -a "kubeadm init \
      --kubernetes-version=v1.17.4 \
      --pod-network-cidr=10.244.0.0/16 \
      --service-cidr=10.96.0.0/12 \
      --apiserver-advertise-address=192.168.174.150" | grep 'kubeadm join'    # 集群入口指向master
      # 成功执行后将给出将node节点加入集群的命令
      kubeadm join 192.168.174.150:6443 --token 2pmmsi.xv4534qap5pf3bjv \
      --discovery-token-ca-cert-hash sha256:69715f25a2e7795f4642afeb8f88c800e601cb1624b819180e820702885b5eef
    • 创建必要文件

      ansible clients_master -m file -a "path=$HOME/.kube state=directory"
      ansible clients_master -m shell -a "cp -i /etc/kubernetes/admin.conf $HOME/.kube/config"
      ansible clients_master -m file -a "path=$HOME/.kube/config state=touch owner=$(id -u) group=$(id -g)"
  • 在 node 节点,将node节点加入集群(命令各不相同,需要在住master节点创建集群后获取命令

    ansible clients_client -m shell -a "kubeadm join 192.168.174.150:6443 --token 2pmmsi.xv4534qap5pf3bjv \
    --discovery-token-ca-cert-hash sha256:69715f25a2e7795f4642afeb8f88c800e601cb1624b819180e820702885b5eef"
  • 在 master 节点,在查看集群状态 此时的集群状态为NotReady,这是因为还没有配置网络插件

    [root@server ~]# ansible clients_master -m shell -a "kubectl get nodes"
    server | CHANGED | rc=0 >>
    NAME      STATUS     ROLES    AGE   VERSION
    client1   NotReady   <none>   14m   v1.17.4
    client2   NotReady   <none>   14m   v1.17.4
    server    NotReady   master   23m   v1.17.4

13.安装网络插件:

  • kubernetes支持多种网络插件,比如flannel、calico、canal等等,任选一种使用即可

  • 本次选择flannel

  • 下面操作只需在 master 节点执行即可,插件使用的是DaemonSet的控制器,它会在每个节点上都运行

  • 获取fannel的配置文件

    ansible clients_master -m get_url -a "dest=./ url=https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml"
  • 部署flannel网络:

    ansible clients_master -m shell -a "kubectl apply -f kube-flannel.yml"
  • 过一分钟左右查看各节点状态,变为Ready说明网络打通了:

    [root@server ~]# ansible clients_master -m shell -a "kubectl get nodes"
    server | CHANGED | rc=0 >>
    NAME      STATUS   ROLES    AGE   VERSION
    client1   Ready    <none>   20m   v1.17.4
    client2   Ready    <none>   20m   v1.17.4
    server    Ready    master   29m   v1.17.4
  • 查看所有pod是否变为Running

    [root@server ~]# ansible clients_master -m shell -a "kubectl get pod --all-namespaces"
    server | CHANGED | rc=0 >>
    NAMESPACE      NAME                             READY   STATUS    RESTARTS   AGE
    kube-flannel   kube-flannel-ds-h7d2z            1/1     Running   0          3m3s
    kube-flannel   kube-flannel-ds-hht48            1/1     Running   0          3m3s
    kube-flannel   kube-flannel-ds-lk7qd            1/1     Running   0          3m3s
    kube-system    coredns-6955765f44-4vg95         1/1     Running   0          29m
    kube-system    coredns-6955765f44-kkndx         1/1     Running   0          29m
    kube-system    etcd-server                      1/1     Running   0          29m
    kube-system    kube-apiserver-server            1/1     Running   0          29m
    kube-system    kube-controller-manager-server   1/1     Running   0          29m
    kube-system    kube-proxy-7x47c                 1/1     Running   0          29m
    kube-system    kube-proxy-pxx4l                 1/1     Running   0          21m
    kube-system    kube-proxy-v54j6                 1/1     Running   0          21m
    kube-system    kube-scheduler-server            1/1     Running   0          29m

相关文章:

使用ansible命令部署k8s集群

1.部署ansible集群 使用python脚本一个简单的搭建ansible集群-CSDN博客 2.ansible命令搭建k8s&#xff1a; 1.主机规划&#xff1a; 节点IP地址操作系统配置server192.168.174.150centos7.92G2核client1192.168.174.151centos7.92G2核client2192.168.174.152centos7.92G2核…...

【上海大学数字逻辑实验报告】四、组合电路(三)

一、 实验目的 掌握多路选择器74LS151的原理。掌握译码器74LS138的原理。学会在Quartus II上使用多路选择74LS151设计电路。学会在Quartus II上使用译码器74LS138设计电路。 二、 实验原理 多路选择器又称数据选择器或多路开关&#xff0c;它是一种多路输入单路输出的组合逻…...

centos安装node 、npm 、nvm

你好&#xff0c;这是Bing。我可以帮你用nodejs写一个http服务器。&#x1f60a; 根据我的搜索结果&#xff0c;你需要使用 require 指令来加载和引入 http 模块&#xff0c;然后使用 http.createServer 方法来创建一个服务器实例&#xff0c;最后使用 listen 方法来监听一个端…...

年终福利|鹅厂重磅AI绘画训练营带你玩转SD

2023年&#xff0c;AI绘画火遍全网&#xff0c;站在12月的中旬回望&#xff0c;这个AI时代必备技能你get了吗&#xff1f;如何掌握图像生成方法&#xff1f;怎样基于Stable Diffusion打造个人专属AI绘画模型&#xff0c;落地项目应用&#xff1f; 腾讯云开发者社区联合腾讯云AI…...

arXiv学术速递笔记12.8

文章目录 一、GSGFormer: Generative Social Graph Transformer for Multimodal Pedestrian Trajectory Prediction&#xff08;GSGFormer&#xff1a;用于多通道行人轨迹预测的产生式社会图转换器&#xff09;二、AnimateZero: Video Diffusion Models are Zero-Shot Image An…...

大模型元年压轴盛会定档12月28日,第十届WAVE SUMMIT即将启航

文章目录 1. 前言2. WAVE SUMMIT五载十届&#xff0c;AI开发者热血正当时3. 酷炫前沿、星河共聚&#xff01;大模型技术生态发展正当时 1. 前言 回望2023年&#xff0c;大语言模型或许将是科技史上最浓墨重彩的一笔。从技术、产业到生态&#xff0c;大语言模型在突飞猛进中加速…...

基于conda环境使用mamba/conda安装配置QIIME 2 2023.9 Amplicon扩增子分析环境,q2cli主要功能模块介绍及使用

QIIME 2 2023.9 Amplicon Distribution介绍&#xff1a; 概述 qiime团队专门针对高通量扩增子序列分析退出的conda集成环境&#xff0c;包括了主要和常见的扩增子分析模块&#xff0c;用户可以单独使用各个模块&#xff0c;也可以使用各模块组成不同的分析流程。从2023.09版本…...

腾讯-轻量应用服务器centos7中宝塔安装MySQL8.0出现内存不足

目录 前言 出现的问题: 解决方法&#xff1a; 编译安装&#xff1a; 极速安装 其他 我的其他博客 前言 说实话&#xff0c;本人也就是个穷学生买不起啥大的服务器啥的&#xff0c;整了个2核 2内存的服务器 用宝塔按mysql5.5是没问题的&#xff0c;一切换8.0就提醒内存不足…...

调用Win10隐藏的语音包

起因 在做一个文本转语音的Demo的时候&#xff0c;遇到了语音包无法正确被Unity识别的问题。明明电脑上安装了语音包但是代码就是识别不出来 原因 具体也不是非常清楚&#xff0c;但是如果语言包是在的话&#xff0c;大概率是Win10系统隐藏了。 确定语言包 首先查看%windi…...

【WPF】应用程序和已知安卓设备的局域网IP之间进行通信

要在WPF应用程序和已知安卓设备的局域网IP之间进行通信&#xff0c;可以使用Socket通信。以下是一个基本的示例&#xff1a; 在WPF应用程序中创建一个Socket对象并连接到安卓设备的IP地址和端口号&#xff1a; using System.Net.Sockets;// 创建一个Socket对象 Socket socket…...

linux Ubuntu下,第一个C++程序访问数据库,遇到的问题,及解决办法

在ubuntu下安装了mysql&#xff0c;mysql以后&#xff0c;编写了第一个访问数据库的程序&#xff1a; #include <iostream> #include <string> #include <cstdlib> //for system #include <mysql.h>using namespace std;int main() {mysqlpp::Connect…...

【Flink on k8s】- 7 - 在本地运行第一个 flink wordcount job

目录 1、环境准备 2、代码开发 3、启动运行 4、在控制台找到 web ui,查看监控...

velocity-engine-core是什么?Velocity模板引擎的使用

velocity-engine-core是什么&#xff1f;Velocity模板引擎的使用 1. 常见的模板引擎2. Velocity 的语法3.Velocity的使用 相信在日常开发中或多或少都听过或者使用过模板引擎&#xff0c;比如熟知的freemarker, thymeleaf等。而模板引擎就是为了实现View和Data分离而产生的。 而…...

【华为od】存在一个m*n的二维数组,其成员取值范围为0,1。其中值为1的元素具备扩散性,每经过1S,将上下左右值为0的元素同化为1。

存在一个m*n的二维数组,其成员取值范围为0,1。其中值为1的元素具备扩散性,每经过1S,将上下左右值为0的元素同化为1。将数组所有成员初始化为0,将矩阵的[i, j]和[m,n]位置上元素修改成1后,在经过多长时间所有元素变为1。 输入描述 输入的前两个数字是矩阵大小。后面是数字…...

docker学习(七、搭建mysql8.2主从)

一、主库搭建 1.构建主库镜像 # 运行mysql镜像&#xff0c;配置端口3307为主库 docker run -p 3307:3306 --name mysql-master --privilegedtrue -v /mydata/mysql-master/log:/var/log/mysql -v /mydata/mysql-master/data:/var/lib/mysql -v /mydata/mysql-master/conf:/etc…...

消费升级:无人零售的崛起与优势

消费升级&#xff1a;无人零售的崛起与优势 随着人们生活水平的提高&#xff0c;消费内容正在从生存型消费转向以精神体验和享乐为主的发展型消费。社会居民的消费结构不断变迁&#xff0c;明显呈现消费升级趋势。个性化和多元化消费势头正在崛起&#xff0c;特别是无人零售的自…...

【开题报告】基于SpringBoot的煤炭企业安全宣传学习平台的设计与实现

1.选题背景 煤炭企业作为我国能源行业的重要组成部分&#xff0c;承担着国民经济的支撑和推动作用。然而&#xff0c;煤炭生产过程中存在较高的安全风险&#xff0c;煤矿事故频发&#xff0c;给人员生命财产安全带来严重威胁&#xff0c;也给社会稳定和经济发展带来不利影响。…...

机器连接和工业边缘计算

软件应用和IT创新是制造业投资的主要驱动力。解决方案架构应围绕特定标准进行整合&#xff0c;并采用架构蓝图和最佳实践来满足最终用户的需求。此外&#xff0c;边缘计算&#xff08;Edge Computing&#xff09;也将在制造业中加速部署。 边缘计算是制造业的下一个变革驱动力。…...

java系列-LinkedHashMap

1.插入新节点时&#xff0c;会将该节点加到链表尾部 public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>{/*** The head (eldest) of the doubly linked list.*/transient LinkedHashMapEntry<K,V> head;/*** The tail (young…...

【linux】查看CPU和内存信息

之前咱们一起学习了查看内存的和CPU的命令。 ​mpstat &#xff1a; 【linux】 mpstat 使用 uptime&#xff1a;【Linux】 uptime命令使用 CPU的使用率&#xff1a;【linux】查看CPU的使用率 nmon &#xff1a;【linux】nmon 工具使用 htop &#xff1a;【linux】htop 命令…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

stm32wle5 lpuart DMA数据不接收

配置波特率9600时&#xff0c;需要使用外部低速晶振...