微服务治理 Istio 1.6部署和应用(下)

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,182元/月
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 微服务治理 Istio 1.6部署和应用

5、可视化监控


istio自带了三个监控平台 •监控指标(Grafana)


1、请求错误率


2、请求延时(响应时间) •网格可视化(Kiali)


3、链路调用拓扑图


4、RPS(每秒请求),也有请求错误率


5、请求/响应数据包大小


6、查看pod日志


7、istio配置资源在线编辑 •调用链跟踪(Jaeger)


8、一个服务涉及的调用情况


9、分析数据包中具体请求/响应信息


10、响应时间


[root@master01 opt]# istioctl dashboard -h
Access to Istio web UIs
Usage:
  istioctl dashboard [flags]
  istioctl dashboard [command]
Aliases:
  dashboard, dash, d
Available Commands:
  controlz    Open ControlZ web UI
  envoy       Open Envoy admin web UI
  grafana     Open Grafana web UI
  jaeger      Open Jaeger web UI
  kiali       Open Kiali web UI
  prometheus  Open Prometheus web UI
  zipkin      Open Zipkin web UI
Flags:
      --address string   Address to listen on. Only accepts IP address or localhost as a value. When localhost is supplied, istioctl will try to bind on both 127.0.0.1 and ::1 and will fail if neither of these address are available to bind. (default "localhost")
  -h, --help             help for dashboard
  -p, --port int         Local port to listen to
Global Flags:
      --context string          The name of the kubeconfig context to use
  -i, --istioNamespace string   Istio system namespace (default "istio-system")
  -c, --kubeconfig string       Kubernetes configuration file
  -n, --namespace string        Config namespace
Use "istioctl dashboard [command] --help" for more information about a command.
[root@master01 opt]# kubectl get pod -n istio-system
NAME                                   READY   STATUS    RESTARTS   AGE
grafana-75745787f9-w8md6               1/1     Running   0          25m
istio-egressgateway-794db4db55-hstw6   1/1     Running   0          25m
istio-ingressgateway-799b86d9-x2gkh    1/1     Running   0          25m
istio-tracing-c7b59f68f-fp66x          1/1     Running   0          25m
istiod-55fff4d845-zmdg8                1/1     Running   0          25m
kiali-85dc7cdc48-vmh29                 1/1     Running   0          25m
prometheus-8685fb8c59-65qxl            2/2     Running   0          25m
##临时开启可用如下办法
[root@master01 opt]# istioctl dashboard controlz istiod-55fff4d845-zmdg8 -n istio-system --address=10.211.55.16
http://localhost:33673


为了可以通过ingressgateway的能够访问三个监控平台,因此需要编写监控monitor-gateway.yaml


[root@master01 istio-1.6.2]# kubectl get svc -n istio-system
NAME                            TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                                      AGE
grafana                         ClusterIP      10.68.185.28    <none>        3000/TCP                                                                     26h
istio-egressgateway             ClusterIP      10.68.80.126    <none>        80/TCP,443/TCP,15443/TCP                                                     26h
istio-ingressgateway            LoadBalancer   10.68.139.54    <pending>     15021:30792/TCP,80:22516/TCP,443:34994/TCP,31400:21999/TCP,15443:22618/TCP   26h
istiod                          ClusterIP      10.68.213.107   <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP,853/TCP                                26h                                                               26h
kiali                           NodePort       10.68.227.1     <none>        20001:24347/TCP                                                              26h
prometheus                      ClusterIP      10.68.241.113   <none>        9090/TCP                                                                     26h                                                              18m
tracing                         ClusterIP      10.68.156.89    <none>        80/TCP                                                                       26h
zipkin                          NodePort       10.68.182.176   <none>        9411:24218/TCP                                                               26h


[root@master01 istio-1.6.2]# cat monitor-gateway.yaml 
---
#网格可视化kiala
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: monitor-gateway
  namespace: istio-system
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: kiali
  namespace: istio-system
spec:
  hosts:
  - "kiali.istio.double.com"
  gateways:
  - kiala-gateway
  http:
  - route:
    - destination:
        host: kiali
        port:
          number: 20001
---
#监控可视化
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: grafana
  namespace: istio-system
spec:
  hosts:
  - "grafana.istio.double.com"
  gateways:
  - grafana-gateway
  http:
  - route:
    - destination:
        host: grafana
        port:
          number: 3000
---
#调用链
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: tracing
  namespace: istio-system
spec:
  hosts:
  - "tracing.istio.double.com"
  gateways:
  - tracing-gateway
  http:
  - route:
    - destination:
        host: tracing
        port:
          number: 80
---
#链路跟踪
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: zipkin
  namespace: istio-system
spec:
  hosts:
  - "zipkin.istio.double.com"
  gateways:
  - monitor-gateway
  http:
  - route:
    - destination:
        host: zipkin
        port:
          number: 8441


部署监控网关入口


[root@master01 istio-1.6.2]# kubectl apply -f monitor-gateway.yaml
[root@localhost istio-1.6.2]# kubectl get gateway,vs -n istio-system
NAME                                          AGE
gateway.networking.istio.io/grafana-gateway   34s
gateway.networking.istio.io/kiala-gateway     34s
gateway.networking.istio.io/monitor-gateway   34s
gateway.networking.istio.io/traing-gateway    34s
NAME                                         GATEWAYS            HOSTS                        AGE
virtualservice.networking.istio.io/grafana   [grafana-gateway]   [grafana.istio.double.com]   34s
virtualservice.networking.istio.io/kiali     [kiala-gateway]     [kiali.istio.double.com]     34s
virtualservice.networking.istio.io/tracing   [tracing-gateway]   [tracing.istio.double.com]   34s
virtualservice.networking.istio.io/zipkin    [monitor-gateway]   [zipkin.istio.double.com]    34s


安装nginx,作为lb,负载均衡到ingressgateway的暴露的nodeport端口上,所有的外部流量通过ingressgateway进去istio进行管理


[root@mysql-cloud-kafka-zk ~]# cat /data/nginx/vhosts/istio.holder.cn.conf
    ....省略
    include /etc/nginx/conf.d/*.conf;
    upstream ingressgateway {
        server 10.100.132.8:22516;
        server 10.100.132.5:22516;
        server 10.100.132.6:22516;
    }
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        location / {
            proxy_pass http://ingressgateway;
            proxy_set_header Host $host;
            proxy_http_version 1.1;
        }
    }


绑定域名到本地hosts,即可访问👉


6、切换bookinfo的入口流量到ingressgateway


# 为Bookinfo部署入口网关
[root@master01 istio-1.6.2]# cat samples/bookinfo/networking/bookinfo-gateway.yaml
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo
spec:
  hosts:
  - "bookinfo.istio.double.com"
  gateways:
  - bookinfo-gateway
  http:
  - match:
    - uri:
        exact: /productpage
    - uri:
        prefix: /static
    - uri:
        exact: /login
    - uri:
        exact: /logout
    - uri:
        prefix: /api/v1/products
    route:
    - destination:
        host: productpage
        port:
          number: 9080
[root@master01 istio-1.6.2]# kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
gateway.networking.istio.io/bookinfo-gateway unchanged
virtualservice.networking.istio.io/bookinfo changed
# 获取网关地址
[root@master01 istio-1.6.2]# kubectl get gateway,vs
NAME                                           AGE
gateway.networking.istio.io/bookinfo-gateway   29h
NAME                                          GATEWAYS             HOSTS   AGE
virtualservice.networking.istio.io/bookinfo   [bookinfo-gateway]   [bookinfo.istio.double.com]     29h


绑定域名,然后访问bookinfo.istio.double.com既可访问,不停地刷新图书单品页,在kiali中会实时地绘制服务网格,如下:


640.png


请求响应如下:


640.png


基于权重流量的实时控制,如下:


640.png


监控指标如下:


640.png

对于服务的可观察性,kiali还提供了很多其他的功能,这也是Istio相较于其他服务网格框架的优势,这里就不展示了。


相关文章
|
2月前
|
jenkins Java 持续交付
使用 Jenkins 和 Spring Cloud 自动化微服务部署
随着单体应用逐渐被微服务架构取代,企业对快速发布、可扩展性和高可用性的需求日益增长。Jenkins 作为领先的持续集成与部署工具,结合 Spring Cloud 提供的云原生解决方案,能够有效简化微服务的开发、测试与部署流程。本文介绍了如何通过 Jenkins 实现微服务的自动化构建与部署,并结合 Spring Cloud 的配置管理、服务发现等功能,打造高效、稳定的微服务交付流程。
411 0
使用 Jenkins 和 Spring Cloud 自动化微服务部署
|
4月前
|
存储 监控 Shell
SkyWalking微服务监控部署与优化全攻略
综上所述,虽然SkyWalking的初始部署流程相对复杂,但通过一步步的准备和配置,可以充分发挥其作为可观测平台的强大功能,实现对微服务架构的高效监控和治理。尽管未亲临,心已向往。将一件事做到极致,便是天分的展现。
|
7月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
444 12
|
8月前
|
存储 NoSQL 关系型数据库
微服务——MongoDB的应用场景
随着Web2.0时代的到来,传统关系型数据库(如MySQL)在高并发读写、海量数据存储及高可扩展性需求方面逐渐力不从心。而MongoDB凭借其灵活的文档结构和高效性能,在社交、游戏、物流、物联网和视频直播等场景中表现出色。这些场景通常具有数据量大、写入频繁且对事务要求不高的特点。选择MongoDB适合以下情况:应用无需复杂事务与join支持、需求不确定需快速迭代、需处理高QPS读写或超大规模数据存储、追求高可用性和快速水平扩展能力。相比MySQL,MongoDB能以更低的学习、开发和运维成本满足现代应用需求。
292 0
|
12月前
|
Cloud Native 安全 持续交付
深入理解微服务架构及其在现代软件开发中的应用
深入理解微服务架构及其在现代软件开发中的应用
351 33
|
存储 监控 API
深入解析微服务架构及其在现代应用中的实践
深入解析微服务架构及其在现代应用中的实践
374 12
|
监控 持续交付 API
深入理解微服务架构及其在现代应用开发中的应用
深入理解微服务架构及其在现代应用开发中的应用
197 4
|
监控 持续交付 API
深入理解微服务架构及其在现代软件开发中的应用
深入理解微服务架构及其在现代软件开发中的应用
213 5
|
12月前
|
运维 Kubernetes Docker
深入理解容器化技术及其在微服务架构中的应用
深入理解容器化技术及其在微服务架构中的应用
826 1
|
11月前
|
Kubernetes 数据可视化 微服务
掌握 Istio:部署完成后如何运用?
本文介绍了在Ubuntu 20.04单机环境下使用Istio服务网格的配置与测试过程。主要内容包括: 1. **环境准备**:使用一台IP为10.9.2.83的机器。 2. **Istio简介**:Istio简化了Kubernetes集群中的服务间通信、流量管理、安全性和可观测性。 3. **部署Bookinfo示例**: - 创建命名空间`istio-demo`并启用自动注入功能。 - 部署Bookinfo应用,包含四个微服务,并验证其正常运行。
136 0

热门文章

最新文章