OBProxy路由策略与使用运维-简介

Posted 柯西极限存在准则

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OBProxy路由策略与使用运维-简介相关的知识,希望对你有一定的参考价值。

背景

OceanBase数据库是分布式数据库,每个表甚至每个表的不同分区都可能存放在不同的机器上。想要对表进行读写,必须 先要定位到数据所属的表或是分区的主副本位置,然后才能执行相应的SQL DML语句,这在应用层面而言是几乎不可能做到的

OBProxy作为OceanBase数据库专用的反向代理软件,其核 心功能就是路由以将客户端发起的数据访问请求转发到正确的OBServer上

客户端通过OBProxy访问OceanBase数据库的数据链路如 图所示,用户通过任意Client驱动发出请求,请求通过负载 均衡组件访问到任意一台无状态的 OBProxy上,然后OBProxy 再将用户请求转发到后端 OceanBase 集群中最佳的 OBServer 上去执行

                           

OBProxy核心功能(路由)

OBProxy作为OceanBase的高性能反向代理服务器,其核心功能就是路由转发

OBProxy路由的目标是将具体SQL转发到最恰当的Server上执行,路由的核心过程包括:

简单的SQL Parser,LDC路由,读写分离,备优先读,黑名单机制,下图为OBproxy的路由逻辑

 路由功能举例

OBProxy核心功能(连接管理)

在observer宕机/升级/重启时,客户端与OBProxy的连接不会断开,OBProx可以迅速切换到正常的server上,对应用透明

OBProxy支持用户通过同一个OBProxy访问多个OceanBase集群

Server session对于每个client session独占

同一个client session对应server session状态保持相同(session变量同步)

OBProxy核心功能(监控&&运维)

周期性汇报统计项到OCP,实现了语句级别,事务级别,session级别,Obproxy级别的各种统计

Xflush日志监控(包括慢查询监控、error包监控等)

SQL Audit功能

实现了大量内部命令来实现远程监控,查询和运维

 

 

Linux企业运维——Kubernetes(十四)PSP安全策略

Linux企业运维——Kubernetes(十四)PSP安全策略

1、PSP安全策略简介

PodSecurityPolicy(简称PSP)是Kubernetes中Pod部署时重要的安全校验手段,能够有效地约束应用运行时行为安全。

默认情况下,Kubernetes 允许创建一个有特权容器的 Pod,这些容器很可能会危机系统安全,而 Pod 安全策略(PSP)则通过确保请求者有权限按配置来创建 Pod,从而来保护集群免受特权 Pod 的影响。

2、PSP安全策略配置

1、编辑API配置文件,在准入控制项中加入PSP模块(多个模块用,隔开)


2、变更该文件后k8s会自动重载,查看6443端口开放表明重载完毕

3、使用nginx镜像创建一个pod,查看pod可以看到该pod无法运行,状态为Error


4、查看创建的pod的日志,可以看到出现pod资源权限过大的报错,这是因为我们在为集群引入PSP后没有进行准入控制

5、新建psp目录,编辑yaml文件,设置一个psp策略示例


6、应用yaml文件,查看psp可以看到策略设置成功

7、新建yaml文件创建角色,对该角色应用创建的psp,创建RoleBinding将这一角色与默认命名空间中的默认SA账户default绑定(因为创建Pod时默认使用default账户进行认证)

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: psp-example
rules:
- apiGroups:
  - extensions
  resources:
  - podsecuritypolicies
  resourceNames:
  - example
  verbs:
  - use

---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: bind-psp-example
  namespace: default
roleRef:
  kind: Role
  name: psp-example
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
  name: default
  namespace: default


8、删除之前创建的pod,重新创建一个pod,查看该pod成功运行就绪

9、但上面所设置的psp策略所开放的权限过大,这里我们删除创建的角色、绑定关系,删除创建的psp,新建子目录new,编辑yaml文件创建较为完善的psp策略

[root@server2 psp]# cat psp.yaml 
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: restrictive
spec:
  privileged: false
  hostNetwork: false
  allowPrivilegeEscalation: false
  defaultAllowPrivilegeEscalation: false
  hostPID: false
  hostIPC: false
  runAsUser:
    rule: RunAsAny
  fsGroup:
    rule: RunAsAny
  seLinux:
    rule: RunAsAny
  supplementalGroups:
    rule: RunAsAny
  volumes:
  - 'configMap'
  - 'downwardAPI'
  - 'emptyDir'
  - 'persistentVolumeClaim'
  - 'secret'
  - 'projected'
  allowedCapabilities:
  - '*'


10、应用该yaml文件,查看psp可以看到策略设置成功,相较于之前创建的策略多了更多限制

11、编辑修改roles.yaml文件,创建集群角色,对该集群角色应用创建的psp,创建ClusterRoleBinding将这一ClusterRole与整个系统中的所有ServiceAccount
绑定

[root@server2 psp]# cat roles.yaml 
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: psp-restrictive
rules:
- apiGroups:
  - extensions
  resources:
  - podsecuritypolicies
  resourceNames:
  - restrictive
  verbs:
  - use

---

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: psp-default
subjects:
- kind: Group
  name: system:serviceaccounts
  namespace: kube-system
roleRef:
  kind: ClusterRole
  name: psp-restrictive
  apiGroup: rbac.authorization.k8s.io


12、此时使用控制器部署pod,查看所有pod都可以成功运行就绪

13、实验完成后清理实验环境,删除创建的集群角色、集群绑定关系,删除创建的psp,编辑API配置文件在准入控制项中删除PSP模块

以上是关于OBProxy路由策略与使用运维-简介的主要内容,如果未能解决你的问题,请参考以下文章

华为USG6330运维记录-端口回流策略路由

组策略应用----运维笔记

TCP/IP网络层设备路由器

Linux企业运维——Kubernetes(十四)PSP安全策略

智汇华云 | ArSDN之分布式路由及浮动IP简介

智汇华云 | ArSDN之分布式路由及浮动IP简介