Openshift结合IaaS的LB与Nginx实现高可用可伸缩外部负载均衡器
背景 Openshift在集群部署时需要额外提供一个负载均衡器,该负载均衡器对master api及router haproxy中的80与443服务进行负载,实现高可用。 如果在IaaS上部署Openshift集群的话,我们很自然地会使用IaaS的LB服务,直接对LB作TCP端口负载就解决问题了,既实现了需要的负载均衡,而且还有健康检查,负载高可用,非常方便。 但是我们的Openshift集群并不是部署在IaaS上,而是额外部署。IaaS上的LB无法直接将集群中的服务器作为监听器的后端进行负载,这时我们就需要在Openshift集群下额外独立部署负载均衡器。考虑到保证负载均衡器的高可用性,及监控等,这会是一个比较复杂的过程。 那么我们是否可以结合IaaS上的LB现有的机制,制定一套既方便部署,又高可用的方案呢?答案是肯定的。 该篇就是介绍如何结合IaaS的LB与代理应用Nginx实现Openshift高可用的外部负载均衡 原理 负载均衡器应用,首先大家想到的最多的两款应用是:Nginx与Haproxy,我们选用了Nginx。 将IaaS的LB与Nginx结合的思路也很简单。在I...
Openshift自定义Router成倍提升集群性能
为什么要自定义Router Openshift的Router节点其实就是一个Haproxy容器应用,这个已经不是什么秘密了。我们平常使用时,不需要关心Haproxy的配置,因为它的默认配置完全满足绝大多数情况的需求。 但是它的默认配置并没有把最大的性能发挥出来,这时就需要我们对Haproxy的配置进行自定义了。 如果你需要实现一些新的功能,比如说将Mysql通过Router对外提供服务等 怎样自定义Router Router Pod根据haproxy-config模板创建haproxy.conf配置文件,默认文件为/var/lib/haproxy/conf/haproxy-config.template Router Haproxy镜像启动时会根据环境变量TEMPLATE_FILE来选择最终使用的模板文件 向Router Pod中放入自定义的模板文件,并将它的路径传给环境变量TEMPLATE_FILE 模板文件中的相关函数 函数 说明 processEndpointsForAlias(alias ServiceAliasConfig, svc ServiceUni...
Openshift部署zalenium(容器化的selenium)及Python自动测试
什么是zaleniumzalenium是一个Selenium Grid扩展,用Docker容器动态扩展你的本地网格。它使用docker-selenium在本地运行Firefox和Chrome中的测试。官网地址 zalenium Openshift上部署zalenium 创建zalenium项目 1oc new-project zalenium --display-name="自动测试Selenium Grid" 创建Service Account 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455# 创建ClusterRole# oc create -f zalenium-role.json{ "kind": "ClusterRole", "apiVersion": "v1", "meta...
Openshift部署测试环境oc-cluster-up
1oc cluster up --base-dir=/root/openshift --public-hostname=master.douhua.com
Openshift集群3-9升级到3-10
更新方法与策略:自动升级方法 下载openshift-ansible的脚本代码 12git clone https://github.com/openshift/openshift-ansible.git git checkout release-3.10 将master上的/etc/origin/master/htpasswd备份到/root/htpasswd 1scp master1:/etc/origin/master/htpasswd /root/htpasswd openshift_master_identity_providers中的filename去掉 123# /etc/ansible/hostsopenshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login':'true','challenge': ...
Openshift集群全环境备份
创建集群全环境备份非常有必要,特别是在生产过程中。当集群发生异常崩溃,数据丢失时,备份的数据就派上了用场,利用备份数据可以将之前的环境重新构建出来。 在Openshift平台,我们可以对集群的完整状态备份到外部存储。集群全环境包括: 集群数据文件 etcd数据库 Openshift对象配置 私有镜像仓库存储 持久化卷 我们要定期对集群作备份,以防止数据的丢失。 集群全环境备份并不是万能的,应用自己的数据我们应该保证有单独的备份。 创建Master节点备份在系统基础架构进行更改,都需要对节点做备份。比如说,系统升级,集群升级或者任何重大更新。通过定期备份数据,当集群出现故障时,我们就能使用备份恢复集群。 Master主机上运行着非常重要的服务:API、Controllers。/etc/origin/master目录下存放着许多重要的文件。 API、Controllers服务等的配置文件 安装生成的证书 云提供商提供的配置文件 密钥和其它身份认证文件 另外如果有额外自定义的配置,比如更改日志级别,使用代理等。这些配置文件在...
Openshift集群全环境恢复
阅读前说明 按照官网提供的文档操作能够恢复etcd数据,但是由于证书的问题,恢复的集群并不能正常使用,需要单独对集群的token进行清理。 官方文档中没有明确恢复etcd集群的部署,经过多次验证,确认了恢复etcd集群需要以下三步:1. 部署1台节点的etcd;2. 在当前1台etcd节点上恢复数据;3. 使用ansible扩容的方式,将etcd节点扩展到3台。 可以更新/etc/etcd/etcd.conf文件更改etcd name,进而解决etcd客户端访问服务器端证书不匹配的问题。 文章最后附上了经过测试认证的根据备份一键恢复etcd集群的脚本。 Openshift集群平台能够使用备份完整恢复集群。Openshift集群全环境备份 在恢复集群之前,请确保对集群做过完成的备份,并重新安装Openshift集群。 恢复Master节点创建Master主机文件的备份后,如果它们被损坏或意外删除,就可以通过这些文件复制回Master主机来恢复文件,然后重新启动受影响的服务。 恢复过程 恢复/etc/origin/master/master-conf...
Openshift集群升级3-6至3-7
更新方法与策略:自动升级方法 更新openshift-ansible的脚本代码 12git pull git checkout -b release-3.7 安装需要的包 1ansible all -m yum -a 'name=pyOpenSSL state=present' 关闭Service Catalog和Template Service Broker。3.7 以上版本默认会启用 Service Catalog 和 Template Service Broker 123456# /etc/ansible/hosts...openshift_enable_service_catalog=falsetemplate_service_broker_install=falseansible_service_broker_install=false... 关闭etcd目录的selinux检查关闭任务Check selinux label of ‘‘与Make sure the ‘‘ has the proper label 12345678910...
Openshif对集群的扩容与缩容
Openshift是一个云平台,它是以集群的方式提供服务。前面已经介绍了,业务都跑在Openshift的Node节点上。随着业务的不断变化,扩展或者消亡,我们的Node提供的服务需求也会不断变化。这时就需要对Node节点进行增删管理。 本篇只介绍CentOS7下管理Node节点。 Openshift使用Ansible playbook来实现扩容与缩容 1. oc命令查看当前Node节点的状态1oc get node --show-labels 2. 添加Node节点到已存在的集群 准备好需要添加的主机 节点类型 说明 Nodes 物理主机或者虚拟机 系统:Fedora 21, CentOS 7.3, 7.4或者7.5 NetworkManager版本1.0以上最少1vCPU最少8GB内存/var/最少15GB空间 /usr/local/bin最少1GB空间容器临时目录最少1GB空间 设置主机的hostname 1hostnamectl --static set-hostname infra1...
Openshit-新的存储类型LocalVolume该如何使用
使用本地盘的方式的有三种:emptyDir、HostPath与Local Volume Openshift针对Local Volume提供了一个local volume provisioner方便PV的自动创建,但目前它需要创建的PV对应的目录必须是挂载点。否则无法创建PV。 除了自动创建PV的过程外,部分与正常使用Local Volume一样。 手动挂载目录使用Local Volume我们先来看下通过手动的方式创建PV使用Local Volume是如何操作的。 1. 创建StorageClass123456apiVersion: storage.k8s.io/v1kind: StorageClassmetadata: name: local-hddprovisioner: kubernetes.io/no-provisionervolumeBindingMode: WaitForFirstConsumer 2. 创建PV1234567891011121314151617181920apiVersion: v1 kind: PersistentVolume metadat...

