首页
提效神器
常用运维脚本汇总
电子书阅读
推荐
电子书阅读
事物管理
Search
1
安装docker时报错container-selinux >= 2:2.74
185 阅读
2
rsync命令(可替代rm删除巨量文件)
147 阅读
3
docker 镜像加速器配置,daemon.json文件详解
138 阅读
4
kubernetes集群各组件安装过程汇总
107 阅读
5
使用国内镜像地址拉取k8s安装需要的images
97 阅读
运维
自动化运维
数据库
容器与k8s
环境
云计算
脚本
ai
登录
/
注册
Search
标签搜索
命令
nginx
zabbix
Mingrui
累计撰写
99
篇文章
累计收到
8
条评论
首页
栏目
运维
自动化运维
数据库
容器与k8s
环境
云计算
脚本
ai
页面
提效神器
常用运维脚本汇总
电子书阅读
推荐
电子书阅读
事物管理
搜索到
99
篇与
的结果
2025-11-25
zookeeper安装
ZooKeeper 是一个分布式协调服务,常用于管理配置、命名和同步服务。长期以来,Kafka 使用 ZooKeeper 负责管理集群元数据、控制器选举和消费者组协调等任务理,包括主题、分区信息、ACL(访问控制列表)等。ZooKeeper 为 Kafka 提供了选主(leader election)、集群成员管理等核心功能,为 Kafka提供了一个可靠的分布式协调服务,使得 Kafka能够在多个节点之间进行有效的通信和管理。然而,随着 Kafka的发展,其对 ZooKeeper的依赖逐渐显露出一些问题,这些问题也是下面 Kafka去除 Zookeeper的原因。kafka 2.8+ 为什么要移除zookeeper组件呢?kafka 4.0+版本彻底移除了zookeeper组件1.复杂性增加ZooKeeper 是独立于 Kafka 的外部组件,需要单独部署和维护,因此,使用 ZooKeeper 使得 Kafka的运维复杂度大幅提升。运维团队必须同时管理两个分布式系统(Kafka和 ZooKeeper),这不仅增加了管理成本,也要求运维人员具备更高的技术能力。2. 性能瓶颈作为一个协调服务,ZooKeeper 并非专门为高负载场景设计, 因此,随着集群规模扩大,ZooKeeper在处理元数据时的性能问题日益突出。例如,当分区数量增加时,ZooKeeper需要存储更多的信息,这导致了监听延迟增加,从而影响Kafka的整体性能。在高负载情况下,ZooKeeper可能成为系统的瓶颈,限制了Kafka的扩展能力。3. 一致性问题Kafka 内部的分布式一致性模型与 ZooKeeper 的一致性模型有所不同。由于 ZooKeeper和 Kafka控制器之间的数据同步机制不够高效,可能导致状态不一致,特别是在处理集群扩展或不可用情景时,这种不一致性会影响消息传递的可靠性和系统稳定性。4.发展自己的生态Kafka 抛弃 ZooKeeper,最核心的原因:Kafka生态强大了,需要自立门户,这样就不会被别人卡脖子。纵观国内外,有很多这样鲜活的例子,当自己弱小时,会先选择使用别家的产品,当自己羽翼丰满时,再选择自建完善自己的生态圈。但是一些旧版的kafka仍需配置ZooKeeper服务,因为Kafka依赖ZooKeeper进行集群协调、Broker注册、Topic管理等操作。安装ZooKeeperJava环境ZooKeeper是基于Java开发的,因此在部署时需要确保机器上有Java运行环境(JRE/JDK)。检查当前 Java 环境首先确认系统是否已安装 Java,以及版本是否符合要求java -version openjdk version "25.0.1" 2025-10-21 OpenJDK Runtime Environment (build 25.0.1+8-Ubuntu-124.04) OpenJDK 64-Bit Server VM (build 25.0.1+8-Ubuntu-124.04, mixed mode, sharing)若提示 command not found,说明未安装 Java,需继续安装java -version 找不到命令 “java”,但可以通过以下软件包安装它: apt install openjdk-17-jre-headless # version 17.0.17+10-1~24.04, or apt install openjdk-21-jre-headless # version 21.0.9+10-1~24.04 apt install default-jre # version 2:1.17-75 apt install openjdk-19-jre-headless # version 19.0.2+7-4 apt install openjdk-20-jre-headless # version 20.0.2+9-1 apt install openjdk-22-jre-headless # version 22~22ea-1 apt install openjdk-11-jre-headless # version 11.0.29+7-1ubuntu1~24.04 apt install openjdk-25-jre-headless # version 25.0.1+8-1~24.04 apt install openjdk-8-jre-headless # version 8u472-ga-1~24.04 root@zookeeper1:~/zookeeper# apt install openjdk-11-jre-headless 正在读取软件包列表... 完成 正在分析软件包的依赖关系树... 完成 正在读取状态信息... 完成 将会同时安装下列软件: alsa-topology-conf alsa-ucm-conf ca-certificates-java java-common libasound2-data libasound2t64 建议安装: default-jre alsa-utils libasound2-plugins libnss-mdns fonts-dejavu-extra fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei | fonts-wqy-zenhei fonts-indic下载并解压ZooKeeper点击 ZooKeeper下载列表 ,下载最新版本的安装包。wget -O zookeeper-3.9.4-bin.tar.gz https://dlcdn.apache.org/zookeeper/zookeeper-3.9.4/apache-zookeeper-3.9.4-bin.tar.gz tar -xf zookeeper-3.9.4-bin.tar.gz mv apache-zookeeper-3.9.4-bin/ /opt/zookeeper注意:集群模式至少需要三台服务器,强烈建议拥有奇数台服务器。如果你只有两台服务器,那么如果其中一台故障,机器数量不足以形成多数法定人数。两台服务器本质上比单台服务器稳定性差,因为存在两个单点故障。配置所有的服务器都拥有相同的配置文件。在ZooKeeper目录下的conf目录中,有个配置文件的示例,拷贝这个文件并修改其中的部分内容cp conf/zoo_sample.cfg conf/zoo.cfg修改项:tickTime=2000 initLimit=10 syncLimit=5 dataDir=/var/zookeeper/data dataLogDir=/var/zookeeper/logs clientPort=2181 server.1=192.168.88.31:2888:3888 server.2=192.168.88.32:2888:3888 server.3=192.168.88.33:2888:3888说明:tickTime:ZooKeeper 使用的基本时间单位(毫秒)。它用于读取心跳,最小会话超时时间是tickTime的两倍。initLimit:用来限制法定人数服务器连接领导者所需时间的超时syncLimit:限制服务器与领导者的过时距离dataDir:存储内存数据库快照的位置,除非另有说明,存储数据库更新的事务日志。dataLogDir:存储日志文件的位置clientPort:用于监听客户端连接的端口server.1=192.168.88.31:2888:3888 集群地址,“2888”和“3888”。对等节点使用前一个端口连接其他节点。这种连接是必要的,以便对等端能够通信,例如达成更新顺序的一致。更具体地说,ZooKeeper服务器利用该端口将追随者连接到领导者。当出现新的领导者时,跟随者会通过该端口与该领导者开启TCP连接。由于默认领导人选举也使用TCP,我们目前要求领导人选举需要另一个端口。这是服务器条目的第二个端口。确保dataDir和dataLogDir目录存在,如果不存在就创建它们。配置myid 在data/目录下,按集群顺序依次创建myid文件并写入id信息。#88.31机器上 echo 1 >myid #88.32机器上 echo 2 >myid #88.33机器上 echo 3 >myid开启服务bin/zkServer.sh start /usr/bin/java ZooKeeper JMX enabled by default Using config: /root/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED root@zookeeper2:~/zookeeper# bin/zkServer.sh status /usr/bin/java ZooKeeper JMX enabled by default Using config: /root/zookeeper/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: leader 配置开机启动(service服务)vim /etc/systemd/system/zookeeper.service [Unit] Description=Apache ZooKeeper Service Documentation=https://zookeeper.apache.org After=network.target [Service] Type=forking ExecStart=/root/zookeeper/bin/zkServer.sh start ExecStop=/root/zookeeper/bin/zkServer.sh stop ExecReload=/root/zookeeper/bin/zkServer.sh restart Restart=on-failure [Install] WantedBy=multi-user.target systemctl daemon-reload systemctl enable zookeeper --now
2025年11月25日
2 阅读
0 评论
0 点赞
2025-11-23
Kafka——Kafka概述
Kafka定义kafka传统定义:Kafka是一个分布式的基于发布/订阅模式的消息列队(Message Queue),主要应用于大数据实时处理领域。发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。Kafka最新定义:Kafka是一个开源的 分布式事件流平台 (Event Streaming Platform),用于高性能 数据管道、流分析、数据集成和关键任务应用 。消息队列目前企业中比较常见的消息列队产品有Kafka、ActiveMQ、RabbitMQ、RocketMQ等。在大数据场景主要采用Kafka作为消息列队。在JavaEE开发中主要采用ActiveMQ、RabbitMQ、RocketMQ。传统消息列队的应用场景主要应用场景包括:缓冲/消峰、解耦和异步通信。缓冲/消峰有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。解耦允许独立的扩展或修改两边的处理过程,只需要确保它们遵守同样的接口约束。异步通信允许用户把一个消息放入队列,但并不立即处理它,然后在需要的时候再去处理它们。消息列队的两种模式1.点对点模式:消费者主动拉取数据,消息收到后清除消息2.发布/订阅模式:可以有多个topic主题(浏览、点赞、收藏、评论等)消费者消费数据之后,不删除数据每个消费者相互独立,都可以消费到数据Kafka特点数据吞吐量巨大:需要能够快速收集各个渠道的海量日志集群容错性高:允许集群内少量节点崩溃功能不需要太复杂:kafka的设计目标算高吞吐量、低延迟和可扩展性,主要关注消息传递而不是消息处理,所以kafka没有支持死信列队、顺序消息等高级功能允许少量数据丢失:在海量的应用日志中,少量的日志丢失算不会影响结果的。所以kafka的设计初衷算允许少量数据丢失的。当然,kafka本身也在不断优化数据安全问题。Kafka基础架构为方便扩展,提高吞吐量,一个topic分为多个partition配合分区的设计,提出消费者组的概念,组内每个消费者并行消费为提高可用性,为每个partition增加若干副本,类似NameNode HAZK中记录谁是leader,Kafka.8.0以后可以配置不采用ZKProducer:消息生产者,向Kafka broker发消息的客户端Consumer:消息消费者,向Kafka broker拉取消息的客户端Topic:主题,存储各种各样的数据注:一个分区的数据只能由一个消费者来消费。
2025年11月23日
2 阅读
0 评论
0 点赞
2025-10-26
ai模型使用的两个建议
随着对话的深入,对话内容会自然增长。建议切换话题时始终新建对话。新建对话时,相当于清空上下文窗口并重置分词计数。若现有分词对后续查询不再有用,建议重置。因为维护这些分词的代价很高。这种代价主要体现在以下两个方面:大量分词,可能导致模型注意力分散。这些前置的分词,相当于模型的工作记忆。当分词过多时,模型可能会被历史标记分散注意力,特别是在后续需要采样标记时。当注意力被分散时,会降低模型的准确性和表现。上下文窗口中的标记越多,计算成本就会越大。虽然这个计算成本的增幅程度很低,但仍会影响生成序列中下一个标记的生成速度。因此模型速度实际上会轻微下降。计算下一个标记的成本变高。且标记数量越多,事实上,可以把上下文窗口中的标记当做珍贵资源。这相当于模型的工作内存。因此不要用无关信息过度加载,尽量保持简洁。这样模型运行的会更快更好。务必注意,当前使用的具体模型版本。大模型的计算成本更高,因此提供方会对大模型收取的费用也更高。请根据自身的大语言模型使用需求权衡利弊,评估是否可以使用更经济的方案。如果基础模型的智能程度不够,而你又是专业用途,就应该考虑购买顶级模型。
2025年10月26日
66 阅读
0 评论
1 点赞
2025-10-26
提升ai回答多样性的提示词
中文版你是一个多样化生成的助手。请按照如下要求输出:生成 5 个不同的候选答案(内容尽量有风格差异)。为每个答案给出 0-1 概率,并保证总和为 1。按概率从高到低排序,逐条输出为:内容|概率。在末尾给出“采样建议”:若只需 1 个答案,推荐选择概率最高者;若需多样性,可按概率加权进行随机采样。英文版You are a helpful assistant. For each query, please generate a set of five possible responses, each within a separate <response> tag. Responses should each include a <text> and a numeric <probability>. Please sample at random from the [full distribution / tails of the distribution, such that the probability of each response is less than 0.10].
2025年10月26日
37 阅读
0 评论
0 点赞
2025-09-20
kubectl常用命令
集群信息显示 Kubernetes 版本:kubectl version显示集群信息:kubectl cluster-info列出集群中的所有节点:kubectl get node查看一个具体的节点详情:kubectl describe node <node-name>5.列出所有命名空间:kubectl get namespaces列出所有命名空间中的所有 pod:kubectl get pods --all-namespacesPod信息列出特定命名空间中的 pod:kubectl get pods -n <namespace>查看一个 Pod 详情:kubectl describe pod <pod-name> -n <namespace>查看 Pod 日志:kubectl logs <pod-name> -n <namespace>尾部 Pod 日志:kubectl logs -f <pod-name> -n <namespace>在 pod 中执行命令:kubectl exec -it <pod-name> -n <namespace> -- <command>Pod 亲和性和反亲和性列出 pod 的 pod 亲和性规则:kubectl get pod <pod-name> -n <namespace> -o=jsonpath='{.spec.affinity}'列出 pod 的 pod 反亲和性规则:kubectl get pod <pod-name> -n <namespace> -o=jsonpath='{.spec.affinity.podAntiAffinity}'节点污点 列出节点污点:kubectl describe node <node-name> | grep TaintsPod 优先级和抢占 列出优先级:kubectl get priorityclassesPod 开销 列出 pod 中的开销:kubectl get pod <pod-name> -n <namespace> -o=jsonpath='{.spec.overhead}'Pod 健康检查检查 Pod 准备情况:kubectl get pods <pod-name> -n <namespace> -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}'检查 Pod 事件:kubectl get events -n <namespace> --field-selector involvedObject.name=<pod-name>服务信息Service信息列出命名空间中的所有服务:kubectl get svc -n <namespace>查看一个服务详情:kubectl describe svc <service-name> -n <namespace>更改和验证 Webhook 配置列出变异 webhook 配置:kubectl get mutatingwebhookconfigurations列出验证 Webhook 配置:kubectl get validatingwebhookconfigurationsPod 网络策略 列出命名空间中的 pod 网络策略:kubectl get networkpolicies -n <namespace>部署相关Deployment信息列出命名空间中的所有Deployment:kubectl get deployments -n <namespace>查看一个Deployment详情:kubectl describe deployment <deployment-name> -n <namespace>查看滚动发布状态:kubectl rollout status deployment/<deployment-name> -n <namespace>查看滚动发布历史记录:kubectl rollout history deployment/<deployment-name> -n <namespace>作业和 CronJob列出命名空间中的所有作业:kubectl get jobs -n <namespace>查看一份工作详情:kubectl describe job <job-name> -n <namespace>列出命名空间中的所有 cron 作业:kubectl get cronjobs -n <namespace>查看一个 cron 作业详情:kubectl describe cronjob <cronjob-name> -n <namespace>StatefulSet信息列出命名空间中的所有 StatefulSet:kubectl get statefulsets -n <namespace>查看一个 StatefulSet详情:kubectl describe statefulset <statefulset-name> -n <namespace>ConfigMap 和Secret信息列出命名空间中的 ConfigMap:kubectl get configmaps -n <namespace>查看一个ConfigMap详情:kubectl describe configmap <configmap-name> -n <namespace>列出命名空间中的 Secret:kubectl get secrets -n <namespace>查看一个Secret详情:kubectl describe secret <secret-name> -n <namespace>命名空间信息查看一个命名空间详情:kubectl describe namespace <namespace-name>资源使用情况检查 pod 的资源使用情况:kubectl top pod <pod-name> -n <namespace>检查节点资源使用情况:kubectl top nodes持久卷和持久卷声明列出PV:kubectl get pv查看一个PV详情:kubectl describe pv <pv-name>列出命名空间中的 PVC:kubectl get pvc -n <namespace>查看PVC详情:kubectl describe pvc <pvc-name> -n <namespace>容量信息列出按容量排序的持久卷 (PV):kubectl get pv --sort-by=.spec.capacity.storage查看PV回收策略:kubectl get pv <pv-name> -o=jsonpath='{.spec.persistentVolumeReclaimPolicy}'列出所有存储类别:kubectl get storageclasses存储卷快照列出存储卷快照:kubectl get volumesnapshot -n <namespace>查看存储卷快照详情:kubectl describe volumesnapshot <snapshot-name> -n <namespace>资源反序列化 反序列化并打印 Kubernetes 资源:kubectl get <resource-type> <resource-name> -n <namespace> -o=json网络信息显示命名空间中 Pod 的 IP 地址:kubectl get pods -n <namespace> -o custom-columns=POD:metadata.name,IP:status.podIP --no-headers列出命名空间中的所有网络策略:kubectl get networkpolicies -n <namespace>查看一个网络策略详情:kubectl describe networkpolicy <network-policy-name> -n <namespace>Ingress和服务网格列出命名空间中的所有Ingress:kubectl get ingress -n <namespace>查看一个Ingress详情:kubectl describe ingress <ingress-name> -n <namespace>列出命名空间中的所有 VirtualServices (Istio):kubectl get virtualservices -n <namespace>查看一个 VirtualService (Istio)详情:kubectl describe virtualservice <virtualservice-name> -n <namespace>节点诊断获取特定节点上运行的 Pod 列表:kubectl get pods --field-selector spec.nodeName=<node-name> -n <namespace>Pod 网络故障排除运行网络诊断 Pod(例如 busybox)进行调试:kubectl run -it --rm --restart=Never --image=busybox net-debug-pod -- /bin/bash测试从 Pod 到特定端点的连接:kubectl exec -it <pod-name> -n <namespace> -- curl <endpoint-url>跟踪从一个 Pod 到另一个 Pod 的网络路径:kubectl exec -it <source-pod-name> -n <namespace> -- traceroute <destination-pod-ip>检查 Pod 的 DNS 解析:kubectl exec -it <pod-name> -n <namespace> -- nslookup <domain-name>资源使用情况资源配额和限制列出命名空间中的资源配额:kubectl get resourcequotas -n <namespace>查看一个资源配额详情:kubectl describe resourcequota <resource-quota-name> -n <namespace>自定义资源定义 (CRD)列出命名空间中的自定义资源:kubectl get <custom-resource-name> -n <namespace>查看自定义资源详情:kubectl describe <custom-resource-name> <custom-resource-instance-name> -n <namespace>使用这些命令时,请记住将<namespace>, <pod-name>, <service-name>, <deployment-name>, <statefulset-name>, <configmap-name>, <secret-name>, <namespace-name>, <pv-name>, <pvc-name>, <node-name>, <network-policy-name>, <resource-quota-name>, <custom-resource-name>, 和替换为你的特定值。<custom-resource-instance-name>这些命令应该可以帮助你诊断 Kubernetes 集群以及在其中运行的应用程序。资源伸缩和自动伸缩Deployment伸缩:kubectl scale deployment <deployment-name> --replicas=<replica-count> -n <namespace>设置Deployment的自动伸缩:kubectl autoscale deployment <deployment-name> --min=<min-pods> --max=<max-pods> --cpu-percent=<cpu-percent> -n <namespace>检查水平伸缩器状态:kubectl get hpa -n <namespace>配置和资源验证验证 Kubernetes YAML 文件而不应用它:kubectl apply --dry-run=client -f <yaml-file>验证 pod 的安全上下文和功能:kubectl auth can-i list pods --as=system:serviceaccount:<namespace>:<serviceaccount-name>安全和授权RBAC和安全性列出命名空间中的角色和角色绑定:kubectl get roles,rolebindings -n <namespace>查看角色或角色绑定详情:kubectl describe role <role-name> -n <namespace>Pod 安全策略 (PSP) 列出所有 Pod 安全策略(如果启用):kubectl get psp事件:查看最近的集群事件:kubectl get events --sort-by=.metadata.creationTimestamp按特定命名空间过滤事件:kubectl get events -n <namespace>Pod 安全标准(PodSecurity 准入控制器) 列出 PodSecurityPolicy (PSP) 违规行为:kubectl get psp -A | grep -vE 'NAME|REVIEWED'服务帐户列出命名空间中的服务帐户:kubectl get serviceaccounts -n <namespace>查看一个服务帐户详情:kubectl describe serviceaccount <serviceaccount-name> -n <namespace>清空节点和解除封锁清空节点以进行维护:kubectl drain <node-name> --ignore-daemonsets解除对节点的封锁:kubectl uncordon <node-name>资源清理强制删除 pod(不推荐):kubectl delete pod <pod-name> -n <namespace> --grace-period=0 --force节点故障排除检查节点情况:kubectl describe node <node-name> | grep Conditions -A5列出节点容量和可分配资源:kubectl describe node <node-name> | grep -E "Capacity|Allocatable"临时容器 运行临时调试容器:kubectl debug -it <pod-name> -n <namespace> --image=<debug-image> -- /bin/sh资源指标 获取 Pod 的 CPU 和内存使用情况:kubectl top pod -n <namespace>kuelet诊断 查看节点上的kubelet日志:kubectl logs -n kube-system kubelet-<node-name>使用Telepresence 进行高级调试 使用 Telepresence 调试 pod:telepresence --namespace <namespace> --swap-deployment <pod-name>Kubeconfig 和上下文列出可用的上下文:kubectl config get-contexts切换到不同的上下文:kubectl config use-context <context-name>Pod 中断预算 (PDB)列出命名空间中的所有 PDB:kubectl get pdb -n <namespace>查看一个PDB详情:kubectl describe pdb <pdb-name> -n <namespace>资源锁诊断(如果使用资源锁)列出服务的服务端点:kubectl get endpoints <service-name> -n <namespace>检查 Pod 中的 DNS 配置:kubectl exec -it <pod-name> -n <namespace> -- cat /etc/resolv.conf自定义指标(Prometheus、Grafana) 查询Prometheus指标:用于kubectl port-forward访问Prometheus和Grafana服务来查询自定义指标。节点条件 自定义查询输出:kubectl get nodes -o custom-columns=NODE:.metadata.name,READY:.status.conditions[?(@.type=="Ready")].status -l 'node-role.kubernetes.io/worker='审核日志 检索审核日志(如果启用):检查 Kubernetes 审核日志配置以了解审核日志的位置。节点操作系统详细信息获取节点的操作系统信息:kubectl get node <node-name> -o jsonpath='{.status.nodeInfo.osImage}'这些命令应该涵盖 Kubernetes 中的各种诊断场景。确保将、、等占位符替换为集群和用例的实际值。其他诊断命令
2025年09月20日
23 阅读
0 评论
0 点赞
1
2
3
...
20