团队环境:OpenVPN集成LDAP认证
📅 2017-09-29
前面已经成功部署了OpenVPN的服务端。客户端和服务端采用的是基于TLS的双向认证,需要给每个客户端生成客户端私钥和证书。本篇将在OpenVPN服务端集成的OpenLDAP认证,这样能够使客户端用户在连接VPN时直接使用统一的OpenLDAP账号。部署的环境和版本信息如下:
...前面已经成功部署了OpenVPN的服务端。客户端和服务端采用的是基于TLS的双向认证,需要给每个客户端生成客户端私钥和证书。本篇将在OpenVPN服务端集成的OpenLDAP认证,这样能够使客户端用户在连接VPN时直接使用统一的OpenLDAP账号。部署的环境和版本信息如下:
...为了方便团队成员从异地访问开发环境,考虑使用OpenVPN搭建虚拟局域网。部署的环境和版本信息如下:
从这里下载easy-rsa。
1unzip easy-rsa-old-master.zip
2cd easy-rsa-old-master/easy-rsa/2.0
3
4ls
5build-ca build-key-pkcs12 inherit-inter pkitool
6build-dh build-key-server list-crl revoke-full
7build-inter build-req openssl-0.9.6.cnf sign-req
8build-key build-req-pass openssl-0.9.8.cnf vars
9build-key-pass clean-all openssl-1.0.0.cnf whichopensslcnf
10
11ln -s openssl-1.0.0.cnf openssl.cnf
可修改vars文件中定义的变量用于生成证书的基本信息。下面生成CA证书:
...目前我们线上环境使用的Kubernetes Dashboard的版本是1.6.1,这里记录一下升级到1.6.3的过程。
Dashboar和Heapster组件主要包含如下部署文件:
当前对应的docker镜像及版本如下:
从gcr pull这些镜像,并将其推送到我们的docker私有仓库:
...前面我们已经在Kubernetes上部署了Redis - 《在Kubernetes上使用Sateful Set部署Redis》。 本篇我们继续把RabbitMQ也跑在K8S上。
在正式开始部署工作之前,我们先来复习一下RabbitMQ的一些基础知识。
RabbitMQ内建的集群功能可以实现其高可用,允许消费者和生产者在RabbitMQ节点崩溃的情况下继续工作,同时可以通过添加更多的节点来提高消息处理的吞吐量。
...DaemonSet好比Kubernetes集群Node的守护进程,可以保证在每个Node上(或者一部分Node上)都运行同一个Pod。 目前我们的线上环境主要用到以下两个DaemonSet:
kube-flannel-ds
这个是部署Kubernetes集群时选用的是flannel network add-onfluent-bit
这个是用来在部署在各个Node上,收集各个Node上容器的日志。我们选用的日志收集方案是EFK(Elasticsearch+Fluent-bit+Kibana),后边有时间再写点fluent-bit的内容我们目前线上Kubernetes的版本总是落后最新的release版本,例如现在Kubernetes最新是1.7,我们使用1.6.x。但是我们注意到Kubernetes 1.7中很多外部组件、Addon都做了更新。我们在使用1.6.x的过程中会考虑提前升级这些组件,以便于后续顺利将Kubernetes升级到1.7。DaemonSet的升级就是需要考虑的。
...Kubernetes集群使用Cron Job管理基于时间的作业,可以在指定的时间点执行一次或在指定时间点执行多次任务。 一个Cron Job就好像Linux crontab中的一行,可以按照Cron定时运行任务。
定时任务对我们并不陌生,例如Linux的crontab,各种编程语言都内置了定时任务支持,这在我们应用开发中比较常见,但这种定时任务在分布式系统中使用会有限制,因此需要分布式计划任务。 Kubernetes的CronJob可以理解为Kubernetes对分布式计划任务的支持。
...图片处理服务是互联网产品开发中必不可少的服务,有很多图片处理引擎如ImageMagic, Graphicsmagic, OpenCV等,我们之前的实现是在我们的对象存储前面搭建了Nginx+Lua+GraphicsMagick的组合,用Lua脚本实现了图片缩放和处理等功能。 最近要搭建独立的图片处理微服务,因此需要对一些图片处理系统做一些调研,就是其中之一。
...ProxySQL 1.4.1是ProxySQL 1.4的首个稳定版本,加入了对MySQL Group Replication的原生支持。
目前我们两套环境使用的是ProxySQL 1.3,使用proxysql_scheduler
调用自定义的MySQL GR检查脚本实现故障切换。
现在1.4内置了对GR的支持,这里体验一下。
前面写过过几篇关于在Kubernetes上运行有状态服务相关的博文:
最近需要在我们的一个Kubernetes集群上部署Redis,因此重新整理,写一下如何在Kubernetes上使用Sateful Set部署Redis。
...Prometheus官方提供了mysqld_exporter,我们直接使用即可。
在每个要监控的MySQL中创建监控用户并授予权限。
1CREATE USER 'exporter'@'127.0.0.1' IDENTIFIED BY 'XXXXXXXX' WITH MAX_USER_CONNECTIONS 3;
2GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'127.0.0.1';
3flush privileges;
mysqld_exporter也是用Go语言写的,安装十分简单,我们的环境MySQL有3个节点,使用ansible部署mysqld_exporter。 这里贴一下其中一个MySQL节点上生成的systemd的单元文件:
...