初探Nginx负载均衡及实例

前言:

    从开始敲第一行代码到现在也有5年多,也有过觉得自己超级厉害,哇,现在想想自己也是真的可怕。

至于为什么会碰编程,唉,故事要从那年大明湖畔边上的夏雨荷说起了

老师:sksk,跟我去学编程吧! 

我:那是什么!

老师:超级棒的东西!

然后就在高一的时候开始c#之路,苦了我这么多年啊,女朋友都没谈几个,谈了也很快就分

今天是我第一次写博客,第一次写技术文章。

上一次写跟博客有关的时候,还是刚学完mvc的时候,写了个博客系统,如果有刚学mvc架构的同学,可以问我要源码,QQ1056375224

写博客的动机呐,是因为前段时候睡少了脑子一热,搭个分布式系统吧,给自己的大学一个圆满的句号。

然后联系了一个做Android的朋友,

当时是这样说的:"我们来做个app,我来搭分布式系统和提供后端服务,你做Android,一起做个开源项目吧"

朋友"我都打算转c++了,还让我做Android!做也可以,那你**的先把分布式系统搭好"

好!!!!立刻就做!!!!

正题:

      我们先来说说什么是分布式系统:分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。

    负载均衡:对请求进行分发,根据一定算法(轮询法,随机法,加权随机法,加权轮询法等)将请求分发给其他的机器,保证每一台机器的负载。PS:但是如果负载均衡器宕机了,就炸了!!!!所以一般负载均衡器会做高可用集群(宕机后由其他机器代替),当然我是做不起群集了,学生党还要啥自行车!

    Nginx:一个高性能的HTTP和反向代理服务,搭建起来很简单,高效,轻量级,很容易搭建,需要一些Linux基础,下面会详细写。

    PS:Linux,很重要,我就吃过苦头,同学们一定要好好学。

操作:

安装虚拟机

    首先,我们要装虚拟机,我买了两台云服务器,用于后面的关系型数据库和文档数据库(学生就是好,120一年)。但是我还需要redis,rabbitmq,日志服务器等等,如果都买服务器太贵了,我家的网络又不是公网ip,花生壳的内网穿透只有2条线路,不够用。但是呐,这些都不需要暴露在外网。真正需要暴露出去的,只有Nginx和文档数据库。可是Nginx需要和web服务通信,所以我选择装虚拟机。

    所以我在自己的垃圾笔记本上先装了4个服务器用于今天的实例。(用了centos,都用linux了,还要啥图形界面要啥ubantu)


虚拟机的安装,这里就不讲了,但是为了以后大家方便,提醒一下,一定要把防火墙关了。

systemctl stop firewalld              //停止防火墙

systemctl disable firewalld          //关闭防火墙自启动

service network restart                //重启网络

安装Nginx

在CentOS7通过命令行安装Nginx服务器

sudo yum install epel-release         //安装Nginx

sudo yum install nginx

sudo systemctl start nginx            //启动

sudo systemctl enable nginx #

echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local        //自启动

好了 然后就安装完了 Nginx是不是特别简单(滑稽脸)

配置Nginx

配置需要使用linux的vim,如果没学过的可以学一下,下面是一些基础操作

i    Insert模式 可更改

q  退出insert模式

shift+:  打开命令行

打开命令行后,q是退出,wq是保存并退出

下面是Nginx配置:

cd /etc/nginx/         //定位到nginx安装目录

vi  nginx.conf        //编辑配置文件

主要配置节点:192.168.1.109:80,192.168.1.126:80,192.168.1.239:80,这是3个部署在不同虚拟机中的Asp .Net Mvc Core 的网站(你也可以部署在本机上,只要在同一个网段内就可以)设计软件架构解决方案在分布式系统基础搭建好开始讲。

.Net Core

C#是要主要的语言,笔者学过很多语言,c,c++,java,py等,但是最喜欢的还是c#。

全宇宙最强大的IDE,层出不穷的语法糖,这些都是其他语言没有的,但是不开源不可跨平台的c#真的是拼过java和py。

还好,有了Core的技术,这是微软的开源项目,还可跨平台。在4月份2.1版本上线后,顶级的服务器性能,配合C#的语法糖,和Vs,天啊撸,我是再也找不到转Java的理由了(天天被人说转java的要哭了)

这里写一下在linux环境下安装.Net Core和创建Mvc项目

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

sudo yum update

sudo yum install dotnet-sdk-2.1

然后就安装完了,接着是创建mvc项目

dotnet new mvc    //创建mvc项目 是的就这么简单

vi Program.cs        //配置一下  改一些对所有可见

dotnet run            //运行


加上UseUrls("http://*:80")!!!!!!一定要加,不加看不到!

效果:

到这里为止呐,我们的Nginx的搭配好了,在core的项目运行后,nginx是设置了core的端口,我们就可以看到这样一个效果。


大家可以看到,这里只有一个负载均衡器的地址192.168.1.42,但是却显示了不同的页面(3个core的网站)。

Nginx会均衡多个服务器的负载,并将请求下发给相对空闲的服务器。

总结:

到这里今天的主题就讲完了,初探Nginx,第一次写不太好,希望大家多多包涵,多提意见。

下期可能会深入的讲一下Nginx,也可能会讲Redis或者Rabbitmq的搭建。

那么我们下期间!

你可能感兴趣的:(初探Nginx负载均衡及实例)