nginx集群

nginx upstream 一致性哈希模块

孤人 提交于 2020-03-29 22:47:31
ngx_http_upstream_consistent_hash 模块是一个负载均衡器,使用一个内部一致性hash算法来选择合适的后端节点。与 PHP 的 memcache 模块memcache.hash_strategy兼容,这意味着可以使用php-memcache模块将内容存储到memcached集群中,而后通过 nginx 在集群中找到值。 该模块通过使用客户端信息(如:$ip, $uri, $args等变量)作为参数,使用一致性hash算法将客户端映射到后端节点。 该模块可以根据配置参数采取不同的方式将请求均匀映射到后端机器,比如: consistent_hash $remote_addr:可以根据客户端ip映射 consistent_hash $request_uri: 根据客户端请求的uri映射 consistent_hash $args:根据客户端携带的参数进行映射 指令 语法:consistent_hash variable_name 默认值:none 上下文:upstream 配置upstream采用一致性hash作为负载均衡算法,并使用配置的变量名作为hash输入。 2 3 4 5 # cd /tmp # wget https://github.com/replay/ngx_http_consistent_hash/archive/master.zip #

详解Session分布式共享(.NET CORE版)

感情迁移 提交于 2020-03-29 00:56:06
一、前言&回顾 在上篇文章 Session分布式共享 = Session + Redis + Nginx 中,好多同学留言问了我好多问题,其中印象深刻的有:nginx挂了怎么办?采用Redis的Session方案与微软Session方案相比,有什么优势呢?Cookie也可以取代Session的,采用Redis的Session方案优势在哪里?Nginx的iphash方式到底是什么?MachineKey有啥用?Net Core怎样实现? 那会儿看到大家的提问,我的回答也只是从应用层面回答,基本上的回答可以总结为:“别人这么做了,解决了这个问题,我用这个方法也解决了这个问题,原理请看链接。”很惭愧的说,那时的我并没有完全理解他真正的优势在哪里,只是凭着直觉和经验知道这样做比较好,知道当一部分东西不可控时候,将其解耦、可视化、集群就可以让一个系统更加健壮,但没有一个理论支撑。经过最近一段时间的查阅资料和阅读书籍,对此有了深刻理解,本文将从网站架构的可用性角度对这种Session共享进行分析和讲解,并用.net core再次实现这种架构模式。(Session分布式共享的net core版,因为工作没有机会应用到生产环境,过往经验就更别提了,所以只是研究性的,请大家注意,但园子里早有大牛写出了相关文章,本文结束会将相关文章贴出) 二、网站可用性--Session管理

【巨杉数据库SequoiaDB】巨杉 Tech | SequoiaDB SQL实例高可用负载均衡实践

不羁岁月 提交于 2020-03-25 00:59:08
1 前言 在应用程序中,应用配置连接的数据库IP地址和端口号都是固定一个的,当所属IP地址的服务器宕机后,需要人为手工更改IP地址切换数据库服务器。同时当应用接收到成千上万的并发 http 请求时,会导致服务器消耗大量系统资源,轻则响应速度降低,严重的甚至会引发宕机。 为了充分合理的利用服务器资源,提高数据服务的性能和稳定性,在较低成本的前提下,保证在部分服务器宕机或发生故障的情况下不影响业务的正常运作。本文主要介绍 Nginx+Keepalived 连接 SequoiaDB -MySQL 实例的高可用方案与实践。 2 SequoiaDB 数据库介绍 SequoiaDB 巨杉数据库是一款完全自研的金融级分布式数据库产品,采用计算与存储分离架构,由数据库实例层和数据库存储引擎层组成。数据库实例层负责解析请求并转发至数据库存储引擎层处理,同时会将数据库存储引擎层的响应结果反馈给应用层,数据库实例层支持包括针对结构化数据的 MySQL 实例、PostgreSQL 实例、SparkSQL 实例,以及针对非结构化数据的 S3 和 PosixFS 文件系统的对象存储实例实例,而数据库存储引擎层是由 SequoiaDB 巨杉数据库的协调节点、编目节点和数据节点组成。该数据库集群架构能方便用户实现由传统数据库到巨杉数据库的无缝迁移,减少应用开发者的开发和学习成本。 2.1 SequoiaDB

第14 章 : Kubernetes Service讲解

只谈情不闲聊 提交于 2020-03-23 04:18:58
Kubernetes Service 本文将主要分享以下四方面的内容: 为什么需要 K8s service; K8s service 用例解读; K8s service 操作演示; K8s service 架构设计。 需求来源 为什么需要服务发现 在 K8s 集群里面会通过 pod 去部署应用,与传统的应用部署不同,传统应用部署在给定的机器上面去部署,我们知道怎么去调用别的机器的 IP 地址。但是在 K8s 集群里面应用是通过 pod 去部署的, 而 pod 生命周期是短暂的。在 pod 的生命周期过程中,比如它创建或销毁,它的 IP 地址都会发生变化,这样就不能使用传统的部署方式,不能指定 IP 去访问指定的应用。 另外在 K8s 的应用部署里,之前虽然学习了 deployment 的应用部署模式,但还是需要创建一个 pod 组,然后这些 pod 组需要提供一个统一的访问入口,以及怎么去控制流量负载均衡到这个组里面。比如说测试环境、预发环境和线上环境,其实在部署的过程中需要保持同样的一个部署模板以及访问方式。因为这样就可以用同一套应用的模板在不同的环境中直接发布。 Service:Kubernetes 中的服务返现与负载均衡 最后应用服务需要暴露到外部去访问,需要提供给外部的用户去调用的。我们上节了解到 pod 的网络跟机器不是同一个段的网络,那怎么让 pod

Keepalived LVS 双机高可用负载均衡架构

浪尽此生 提交于 2020-03-22 15:25:44
实验环境: 主机 IP LVS-1 1.1.1.101 LVS-2 1.1.1.102 Nginx-1 1.1.1.103 Nginx-1 1.1.1.104 VIP 1.1.1.100 在这里插入图片描述 Keepalived - LVS 实验步骤: 1) 配置 Web 服务 可参考Nginx 安装 Web-1 安装、配置、启动 useradd -M -s /sbin/nologin nginx cd /usr/src/nginx-1.6.0/ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin echo 'This is a Web1-Master ' > /usr/local/nginx/html/index.html nginx curl 1.1.1.103 This is a Web1-Master Web-1 设置路由规则 [root@localhost ~]# vim /etc/sysctl.conf [root

集群应用系统

坚强是说给别人听的谎言 提交于 2020-03-19 18:05:17
集群应用系统 使用 Mycat读写分离数据库作为应用系统的数据库后端,使用 ZooKeeper集群, Kafka集群提供应用系统调度服务,使用 Reids提供应用系统消息队列服务 节点分配 192.168.37.14 mycat,zookeeper1 192.168.37.12 db1,zookeeper2 192.168.37.13 db2,zookeeper3 192.168.37.15 redis,nginx 192.168.37.16 jar1 192.168.37.17 jar2 修改各个节点名称 # hostnamectl set-hostname jar1 # hostnamectl set-hostname jar2 # hostnamectl set-hostname redis 构建集群应用系统环境 修改数据库配置 新建gpmall数据库(db1 ) 将提供的 gpmall.sql数据库文件上传到 db1的 /root目录下 # mysql -uroot -p123456 创建库 gpmall,将提供的 gpmall.sql文件导入到 gpmall库中 > create database gpmall; > use gpmall > source /root/gpmall.sql > quit 退出数据库 修改mycat配置(mycat) 修改配置文件 # vi

ngin负载均衡集群(一)

百般思念 提交于 2020-03-18 23:54:05
一、nginx负载均衡集群介绍: 1.反向代理与负载均衡概念简介 严格地说, nginx仅仅是作为 Nginx Proxy反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果,所以本文称之为nginx负载均衡。那么,反向代理和负载均衡有什么区别呢? 普通负载均衡软件,例如大名鼎鼎的LVS,其实现的功能只是对请求数据包的转发(也可能会改写数据包)、传递,其中DR模式明显的特征是从负载均衡下面的节点服务器来看,接收到的请求还是来自访问负载均衡器的客户端的真实用户,而反向代理就不样了,反向代理接收访问用户的请求后,会代理用户重新发起请求代理下的节点服务器,最后把数据返回给客户端用户,在节点服务器看来,访问的节点服务器的客户端用户就是反向代理服务器了,而非真实的网站访问用户。句话,LVS等的负载均衡是转发用户请求的数据包,而 nginx反向代理是接收用户的请求然后重新发起请求去请求其后面的节点。 2、实现负载均衡的组件说明: 实现负载均衡的组件主要有两个: ngx_http_proxy_module proxy代理模块,用于把请求后抛给服务器节点或upstream服务器池 ngx_http_upstream_module 负载均衡模块,可以实现网站的负载均衡功能及结点的健康检查 二、环境准备: 系统:CentOS Linux release 7.5.1804 (Core)

Nginx 安装部署

拟墨画扇 提交于 2020-03-15 06:38:38
Nginx 安装部署 Nginx,一个被贴满,高性能,低消耗,低成本标签的web服务器。想必大家都早有耳闻。我是在接触了公司的图片服务器的时候,才开始真正接触它。本文从Nginx 和传统项目的区别 和 Nginx的安装部署两个方面来了解它。 1 Nginx 和 传统项目的区别 1.1 传统项目管理图片的思路 在传统项目中,我们一般通过在web项目的根目录下创建一个用于存储图片的images文件夹来方便管理图片。但随着业务和规模的逐渐扩大,一台服务器已经无法满足我们的需求,我们可以通过搭建服务器集群来处理高并发的场景。 好景不长,集群刚搭好,就有用户反馈,图片为什么时而有,时而没有? 这是因为:图片存储在 服务器/web根目录/images文件夹 中,当用户在上传图片的时候,只将图片传给了一台服务器,在获取图片时,可能调用了其他服务器。这样会出现该问题。 解决这个问题很简单,就是把图片单独放在一个服务器。如果选择Apache的tomcat服务器,在处理业务逻辑简单的图片服务器中似乎显得有些笨重。一款高性能,低成本轻量级web服务器 nginx 脱颖而出。不仅如此它还是一款反向代理服务器和电子邮件代理服务器。 2 安装部署 2.1 理想流程 [root@itdragon ~]# wget http://nginx.org/download/nginx-1.13.6.tar.gz

Nginx(四) nginx+consul+upasync 在ubnutu18带桌面系统 实现动态负载均衡

青春壹個敷衍的年華 提交于 2020-03-14 09:40:40
1.1 什么是动态负载均衡 传统的负载均衡,如果Upstream参数发生变化,每次都需要重新加载nginx.conf文件,因此扩展性不是很高,所以我们可以采用动态负载均衡,实现Upstream可配置化、动态化,无需人工重新加载nginx.conf。这类似分布式的配置中心 1.2 动态负载均衡实现方案 1.Consul+Consul-template 每次发现配置更改需要raload nginx,重启Nginx。(不推荐) 2.Consul+OpenResty 实现无需raload动态负载均衡。(推荐) 3.Consul+upsync+Nginx 实现无需raload动态负载均衡 (推荐) 1.3 常用服务器注册与发现框架 常见服务发现框架 Consul、Eureka、 ZooKeeper以及Etcd ZooKeeper是这种类型的项目中历史最悠久的之一,它起源于Hadoop。它非常成熟、可靠,被许多大公司(YouTube、eBay、雅虎等)使用。 etcd是一个采用HTTP协议的健/值对存储系统,它是一个分布式和功能层次配置系统,可用于构建服务发现系统。其很容易部署、安装和使用,提供了可靠的数据持久化特性。它是安全的并且文档也十分齐全。 2 Consul快速入门 Consul是一款开源的分布式服务注册与发现系统,通过HTTP API可以使得服务注册、发现实现起来非常简单

Elasticsearch集群数据迁移

假如想象 提交于 2020-03-13 12:43:34
参考 https://www.elastic.co/guide/en/elasticsearch/reference/5.0/modules-snapshots.html https://www.elastic.co/guide/en/elasticsearch/guide/current/_rolling_restarts.html https://blog.csdn.net/u014431852/article/details/52905821 环境 阿里云elasticsearch集群5.0版本 微软云elasticsearch集群5.6版本 需求 需要把阿里云elasticsearch集群新老数据迁移到微软云elasticsearch集群 解决 新数据比较好弄数据源输出到新的微软云kafka集群然后微软云logstash消费新数据到新elasticsearch集群即可,关于老数据迁移比较麻烦,但官网也给了成熟的解决方案既是快照备份与还原,下面实施过程既是对实施过程的记录 实施 阿里云elasticsearch集群操作 一,先关闭数据平衡,注意一个一个的来,关一个节点的进程none,all循环一次,否则最后集群切片变动,恢复时间很长 1、修改elasticsearch.yml配置,添加如下 path.repo: /storage/esdata 设置索引备份快照路径