在CSDN学Golang云原生(服务网格istio)
一,在Kubernetes上部署istio
在Kubernetes上部署istio,可以按照以下步骤进行:
- 安装Istio
使用以下命令从Istio官网下载最新版本的Istio:
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=<VERSION> sh -
其中,<VERSION>是要安装的Istio版本号。
将下载的文件解压到本地目录:
tar xzf istio-<VERSION>-linux-amd64.tar.gz
进入解压后的目录:
cd istio-<VERSION>
然后,安装Istio CRDs(Custom Resource Definitions):
kubectl apply -f manifests/crds.yaml
最后,安装Istio组件和示例应用程序:
kubectl apply -f manifests/
- 部署应用程序
将Golang云原生应用程序打包成Docker镜像,并上传至Docker Hub等容器镜像仓库。然后,在Kubernetes中创建Deployment和Service资源对象来部署该应用程序。
例如,可以使用类似以下的YAML配置文件来创建Deployment和Service资源对象:
apiVersion: apps/v1
kind: Deployment
metadata:name: myapp-deployment
spec:replicas: 3 # 副本数为3个,可根据实际情况调整。selector:matchLabels:app: myapp-label # 标签名称为myapp-label。template:metadata:labels:app: myapp-label # 标签名称为myapp-label。spec:containers:- name: myapp-containerimage: <DOCKER_IMAGE_NAME>:<TAG>ports:- containerPort: 8080 # 应用程序监听的端口号为8080。---
apiVersion: v1
kind: Service
metadata:name: myapp-service
spec:selector:app: myapp-label # 标签名称为myapp-label。ports:- name: http-portport: 80 # 访问服务时使用的端口号。targetPort: 8080 # 实际转发到容器中的端口号是8080。
其中,<DOCKER_IMAGE_NAME>和<TAG>分别是应用程序打包成Docker镜像后的名称和标签。
- 部署istio sidecar
在部署Istio sidecar之前,需要将应用程序所在的命名空间进行标记。例如:
kubectl label namespace <NAMESPACE> istio-injection=enabled
其中,<NAMESPACE>是应用程序所在的命名空间。
然后,在部署应用程序时,Istio sidecar会自动注入到该应用程序中:
apiVersion: apps/v1
kind: Deployment
metadata:name: myapp-deployment
spec:template:metadata:labels:app: myapp-label # 标签名称为myapp-label。spec:containers:- name: myapp-containerimage: <DOCKER_IMAGE_NAME>:<TAG>ports:- containerPort: 8080 # 应用程序监听的端口号为8080。
- 配置Istio流量管理
在Kubernetes中,可以通过创建Gateway和VirtualService资源对象来配置Istio流量管理。例如:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:name: myapp-gateway
spec:selector:istio: ingressgatewayservers:- hosts:- "myapp.example.com" # 访问该应用程序使用的域名或IP地址。port:name: http-portnumber: 80 # 访问服务时使用的端口号。---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: myapp-virtualservice
spec:hosts:- "myapp.example.com" # 访问该应用程序使用的域名或IP地址。gateways:- myapp-gateway # 关联上述定义的Gateway对象。http:- route:- destination:host: myapp-service # 关联上述定义的Service对象。port:number: 80 # 实际访问容器中应用程序所使用的端口号是80。
其中,myapp.example.com是访问该应用程序使用的域名或IP地址。
- 验证部署结果
完成以上步骤后,即可访问部署好的Golang云原生应用程序,并通过Istio Dashboard等工具查看其监控信息。
二,istio流量管理实践
使用Istio进行流量管理,可以按照以下步骤进行:
- 部署示例应用程序
在Kubernetes中部署示例应用程序。例如,可以使用类似以下的YAML配置文件来创建Deployment和Service资源对象:
apiVersion: apps/v1
kind: Deployment
metadata:name: myapp-deployment
spec:replicas: 3 # 副本数为3个,可根据实际情况调整。selector:matchLabels:app: myapp-label # 标签名称为myapp-label。template:metadata:labels:app: myapp-label # 标签名称为myapp-label。spec:containers:- name: myapp-containerimage: <DOCKER_IMAGE_NAME>:<TAG>ports:- containerPort: 8080 # 应用程序监听的端口号为8080。---
apiVersion: v1
kind: Service
metadata:name: myapp-service
spec:selector:app: myapp-label # 标签名称为myapp-label。ports:- name: http-portport: 80 # 访问服务时使用的端口号。targetPort: 8080 # 实际转发到容器中的端口号是8080。
其中,<DOCKER_IMAGE_NAME>和<TAG>分别是应用程序打包成Docker镜像后的名称和标签。
- 创建Gateway和VirtualService资源对象
创建Gateway和VirtualService资源对象来配置Istio流量管理。例如:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:name: myapp-gateway
spec:selector:istio: ingressgatewayservers:- hosts:- "myapp.example.com" # 访问该应用程序使用的域名或IP地址。port:name: http-portnumber: 80 # 访问服务时使用的端口号。---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: myapp-virtualservice
spec:hosts:- "myapp.example.com" # 访问该应用程序使用的域名或IP地址。gateways:- myapp-gateway # 关联上述定义的Gateway对象。http:- route:- destination:host: myapp-service # 关联上述定义的Service对象。port:number: 80 # 实际访问容器中应用程序所使用的端口号是80。
其中,myapp.example.com是访问该应用程序使用的域名或IP地址。
- 配置Istio流量规则
配置Istio流量规则来控制如何将流量路由到不同版本、环境和地理位置等目标。例如:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:name: myapp-destinationrule
spec:host: myapp-service # 目标主机为myapp-service Service对象名称。subsets:- name: v1-subset # 将所有标签为version=v1的Pod分配给v1-subset。labels:version: v1- name: v2-subset # 将所有标签为version=v2的Pod分配给v2-subset。labels:version: v2---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: myapp-virtualservice
spec:hosts:- "myapp.example.com" # 访问该应用程序使用的域名或IP地址。gateways:- myapp-gateway # 关联上述定义的Gateway对象。http:- route:- destination:host: myapp-service # 关联上述定义的Service对象。weight: 100 # 所有流量都路由到v1版本,权重为100%。- destination:host: myapp-service # 关联上述定义的Service对象。subset: v2-subsetweight: 0 # 所有流量都不路由到v2版本,权重为0%。
其中,DestinationRule用于配置目标主机和子集信息,而VirtualService则用于配置如何将流量路由到这些目标主机和子集。在以上示例中,将所有流量都路由到v1版本,并且不进行负载均衡;而对于v2版本,则将其权重设置为0%,表示不进行任何访问。
- 验证部署结果
完成以上步骤后,即可验证Istio流量管理是否生效。可以通过Istio Dashboard等工具查看监控信息,或者直接访问应用程序的域名或IP地址进行验证。
Golang云原生学习路线图、教学视频、文档资料、面试题资料(资料包括C/C++、K8s、golang项目实战、gRPC、Docker、DevOps等)免费分享 有需要的可以加qun:793221798领取
三,istio安全配置实践
使用Istio进行安全配置,可以按照以下步骤进行:
- 部署示例应用程序
在Kubernetes中部署示例应用程序。例如,可以使用类似以下的YAML配置文件来创建Deployment和Service资源对象:
apiVersion: apps/v1
kind: Deployment
metadata:name: myapp-deployment
spec:replicas: 3 # 副本数为3个,可根据实际情况调整。selector:matchLabels:app: myapp-label # 标签名称为myapp-label。template:metadata:labels:app: myapp-label # 标签名称为myapp-label。spec:containers:- name: myapp-containerimage: <DOCKER_IMAGE_NAME>:<TAG>ports:- containerPort: 8080 # 应用程序监听的端口号为8080。---
apiVersion: v1
kind: Service
metadata:name: myapp-service
spec:selector:app: myapp-label # 标签名称为myapp-label。ports:- name: http-portport: 80 # 访问服务时使用的端口号。targetPort: 8080 # 实际转发到容器中的端口号是8080。
其中,<DOCKER_IMAGE_NAME>和<TAG>分别是应用程序打包成Docker镜像后的名称和标签。
- 创建Gateway和VirtualService资源对象
创建Gateway和VirtualService资源对象来配置Istio流量管理。例如:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:name: myapp-gateway
spec:selector:istio: ingressgatewayservers:- hosts:- "myapp.example.com" # 访问该应用程序使用的域名或IP地址。port:name: http-portnumber: 80 # 访问服务时使用的端口号。---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: myapp-virtualservice
spec:hosts:- "myapp.example.com" # 访问该应用程序使用的域名或IP地址。gateways:- myapp-gateway # 关联上述定义的Gateway对象。http:- route:- destination:host: myapp-service # 关联上述定义的Service对象。port:number: 80 # 实际访问容器中应用程序所使用的端口号是80。
其中,myapp.example.com是访问该应用程序使用的域名或IP地址。
- 配置Istio安全规则
配置Istio安全规则来保护和控制对应用程序进行访问。例如:
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:name: myapp-authorizationpolicy
spec:selector:matchLabels:app: myapp-labelversion: v1env: prodaction : ALLOW
其中,AuthorizationPolicy可以设置在集群范围、命名空间范围或者单个服务范围内,并且可以根据标签选择器匹配目标对象。在以上示例中,对于标签为app=myapp-label、version=v1和env=prod的Pod进行访问控制,允许所有操作。
- 验证部署结果
完成以上步骤后,即可验证Istio安全配置是否生效。可以通过Istio Dashboard等工具查看监控信息,或者直接访问应用程序的域名或IP地址进行验证。注意,在实际生产环境中,需要根据实际情况调整安全策略和权限规则。
四,使用Prometheus进行生产规模的监控
使用Prometheus进行生产规模的监控,可以按照以下步骤进行:
- 安装和配置Prometheus
安装并配置Prometheus服务器。例如,在Kubernetes中部署一个Prometheus实例,并将其配置为收集指定名称空间中所有Pod的指标数据:
apiVersion: v1
kind: ServiceAccount
metadata:name: prometheus-server
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:name: prometheus-server
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin # 授予Prometheus访问全部资源的权限。
subjects:
- kind: ServiceAccountname: prometheus-server # 将Prometheus服务帐户与角色绑定。
---
apiVersion: apps/v1beta2
kind: Deployment
metadata:name: prometheus-deployment
spec:replicas: 1 # 可根据实际情况调整副本数。selector:matchLabels:app: prometheus-server # 指定应用程序标签为prometheus-server。template:metadata:labels:app: prometheus-server # 指定应用程序标签为prometheus-server。spec:serviceAccountName : prometheus-servercontainers:- name : prometheusimage : quay.io/prometheus/prometheuargs :- "--config.file=/etc/prometheu/prometheu.yml"ports :- containerPort :9090volumeMounts :- mountPath : /etc/prometheusname : config-volumevolumes :- name : config-volumeconfigMap :name : prometheus-server-configmap---
apiVersion: v1
kind: Service
metadata:name: prometheus-service
spec:type: NodePort # 可以根据实际情况调整暴露方式。selector:app: prometheus-server # 指定应用程序标签为prometheus-server。ports:- port: 9090 # Prometheus服务器的监听端口号。targetPort: 9090 # 实际转发到容器中的端口号是9090。
其中,prometheus-server-configmap是一个配置映射,包含了Prometheus的配置文件。例如:
apiVersion: v1
kind: ConfigMap
metadata:name: prometheus-server-configmap
data:prometheu.yml: |global:scrape_interval :15sscrape_configs :- job_name : "kubernetes-pods"kubernetes_sd_configs:- role: podrelabel_configs:- source_labels : [__meta_kubernetes_pod_label_app]regex : myapp-labelaction : keep
- 部署示例应用程序和Exporter组件
在Kubernetes中部署示例应用程序,并且使用Exporter组件将其指标数据暴露给Prometheus服务器。例如,可以使用以下YAML配置文件创建Deployment和Service资源对象:
apiVersion: apps/v1
kind: Deployment
metadata:name: myapp-deployment
spec:replicas: 3 # 副本数为3个,可根据实际情况调整。selector:matchLabels:app: myapp-label # 标签名称为myapp-label。template:metadata:labels:app: myapp-label # 标签名称为myapp-label。spec:containers:- name: myapp-containerimage: <DOCKER_IMAGE_NAME>:<TAG>ports:- containerPort: 8080 # 应用程序监听的端口号为8080。---
apiVersion: v1
kind: Service
metadata:name: myapp-service
spec:selector:app: myapp-label # 标签名称为myapp-label。ports:- name: http-portport: 80 # 访问服务时使用的端口号。targetPort: 8080 # 实际转发到容器中的端口号是8080。
其中,<DOCKER_IMAGE_NAME>和<TAG>分别是应用程序打包成Docker镜像后的名称和标签。
接下来,部署一个Prometheus Exporter组件。例如,在Kubernetes中使用以下YAML配置文件创建Deployment和Service资源对象:
apiVersion : apps/v1kind : Deploymentmetadata :name : prometheus-exporter-deploymentspec :replicas : 1selector :matchLabels :name : prometheus-exportertemplate :metadata :labels :name : prometheus-exporterspec:containers:- name : prometheus-exporterimage : quay.io/prometheus/node_exporte:v0.18.1ports:- containerPort :9100resources:requests :cpu : "100m"memory : "100Mi"limits :cpu : "200m"memory : "200Mi"
其中,node_exporter:v0.18.1是一个Prometheus Exporter组件镜像,可以将主机的指标数据暴露给Prometheus服务器。
- 配置Prometheus规则
配置Prometheus规则来定义需要监控的指标。例如:
groups:- name: myapp-rulesrules:- alert: HighRequestLatencyexpr: job:request_latency_seconds_mean5m{job="myapp"} > 0.5for: 10slabels:severity: warningannotations:summary: High request latency on {{ $labels.instance }}description: "{{ $labels.instance }} has a request latency above 0.5 seconds ({{ printf "%.2f" $value }}s)"
其中,request_latency_seconds_mean_5m{job="myapp"}是示例应用程序中请求延迟的平均值。
- 验证部署结果
完成以上步骤后,即可验证Prometheus是否正确地收集和显示各种指标数据。可以通过Prometheus Web UI等工具查看监控信息,并且根据实际情况调整监控策略和报警规则。
相关文章:
在CSDN学Golang云原生(服务网格istio)
一,在Kubernetes上部署istio 在Kubernetes上部署istio,可以按照以下步骤进行: 安装Istio 使用以下命令从Istio官网下载最新版本的Istio: curl -L https://istio.io/downloadIstio | ISTIO_VERSION<VERSION> sh - 其中&…...
Golang 获取本地 IP 地址方法
在 Golang 中,使用 net 包可以很方便地获取到本机IP地址。 借助 net.InterfaceAddrs 方法 简单示例代码如下: package mainimport ("fmt""net" )func main() {addrList, err : net.InterfaceAddrs()if err ! nil {panic(err)}for…...
抖音seo短视频账号矩阵系统技术开发简述
说明:本开发文档适用于抖音seo源码开发,抖音矩阵系统开发,短视频seo源码开发,短视频矩阵系统源码开发 一、 抖音seo短视频矩阵系统开发包括 抖音seo短视频账号矩阵系统的技术开发主要包括以下几个方面: 1.前端界面设…...
运维高级--shell脚本完成分库分表
为什么要进行分库分表 随着系统的运行,存储的数据量会越来越大,系统的访问的压力也会随之增大,如果一个库中的表数据超过了一定的数量,比如说MySQL中的表数据达到千万级别,就需要考虑进行分库分表; 其…...
Mysql 忘记密码怎么重置密码(详细步骤)
每种方法都有其适用的情况,根据具体情况选择合适的方法。无论选择哪种方法,请务必在重置密码后及时删除临时用户并重新启动 MySQL 服务。 一、使用 mysqladmin 重置密码 停止服务 # systemctl 启动的使用这个停止 $ sudo systemctl stop mysql# mac 本机…...
机器学习深度学习——图像分类数据集
👨🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——softmax回归(下) 📚订阅专栏:机器学习&&深度学习…...
【PWN · 栈迁移】[BUUCTF]ciscn_2019_es_2
第一道栈迁移题目,跌跌撞撞理解了 前言 当前溢出可用空间比较少时(极端情况下仅能覆写ebp和ret),可以通过栈迁移的方式,扩大shellcode的容纳空间,其核心是将esp移动到一段shellocode开头。而esp总是由ebp赋…...
网络编程(13): 网络通信常用命令(后续待补充)
ifconfig 一般用于查看网卡信息 ping 一般用于侦测本机到目标网络主机的网络是否通常: ping ip/域名 telnet 可以用于指定ip地址和端口的侦听服务是否存在:telnet ip port, 也可以模拟客户端给服务器发数据 netstat 用于查看网络连接状态 -a: 显示所有选项 -t&#…...
flask创建数据库连接池
flask创建数据库连接池 在Python中,您可以使用 Flask-SQLAlchemy 这个扩展来创建一个数据库连接池。Flask-SQLAlchemy 是一个用于 Flask 框架的 SQLAlchemy 操作封装,实现了 ORM(Object Relational Mapper)。ORM 主要用于将类与数据库中的表建立映射关系…...
C语言手撕顺序表
目录 一、概念 1、静态顺序表:使用定长数组存储元素。 2、动态顺序表:使用动态开辟的数组存储 二、接口实现 1、对顺序表的初始化 2、对数据的销毁 3、对数据的打印 4、检查是否需要扩容 5、尾插 6、头插 7、尾删 8、头删 9、在pos位置插入x …...
常见的排序算法
常见的排序算法 常见的排序算法包括: 冒泡排序(Bubble Sort):依次比较相邻的元素,将较大的元素交换到右侧,逐步将最大元素移动到末尾。插入排序(Insertion Sort):将数组…...
C#如何使用SQLite数据库?
文章目录 0.引言1.SQLite工具准备2.创建窗体项目并添加SQLite的命名空间3.编写使用SQLite代码4.结果展示 0.引言 SQLite是一个轻量级的嵌入式数据库,它的库文件非常小巧,不需要独立的服务器进程或配置。这使得它非常适合在资源受限的环境中使用ÿ…...
如何将表格中的状态数据转换为Tag标签显示
考虑到系统前端页面的美观程度,通常通过Tag标签来代替某条数据中的状态信息。仅通过一点操作,便能够使得页面美观程度得到较大提升,前后对比如下所示。代码基于Vue以及Element-ui组件实现。 修改前: 修改后: 修改前…...
centos中修改防火墙端口开放配置
1、直接进入文件修改 vim /etc/sysconfig/iptables 2、添加需要开放的端口 (1)添加需要开放的单个端口 4001 -A INPUT -m state --state NEW -m tcp -p tcp --dport 4001 -j ACCEPT (2)添加需要开放的某个网段端口 4001:4020 …...
程序设计 算法基础
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…...
【数据结构】之十分好用的“链表”赶紧学起来!(第一部分单向链表)
💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...
ubuntu开机自启动
ubuntu开机自启动 1、建一个test.sh脚本,并写入 #!/bin/sh gnome-terminal -x bash -c ‘cd /home/文件路径/;python3 main.py’ exit 0 2、:wq!保存 3、创建rc-local.service文件(sudo vim /etc/systemd/system/rc-local.service)…...
Git将其他分支合并至主分支
主要思想: 把分支代码合并到master,合给谁,就先切换到谁的分支 1. 当前分支是dev,开发完成后,需要合并到master分支 先把该提交的提交,需要push的push完成后,再切换分支。 否则也会告诉你要提交…...
Python+request+pytest 接口自动化测试框架入门(与unittest的比较)
1. Pythonrequestpytest 接口自动化测试框架入门 - 简书 pytest和unittest的比较: pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点: 简单灵活,容易上手支持参数化能够支持简单的单元测试和复杂的功能测试&a…...
数据结构——复杂度
总有一天你要一个人,再暗夜中,向那座桥走过去 文章目录 一、算法的复杂度 考察形式范例 二、算法的时间复杂度 大O的渐进表示法 常见的复杂度对比 例题:消失的数字 题目的三种思路 1.排序遍历 2.减法 3.单身狗思想 三、空间复杂度…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...
【若依】框架项目部署笔记
参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…...
