当前位置: 首页 > news >正文

Nginx | 负载均衡(一)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

###背景

想在本机做nginx的负载相关工作

###准备工作

1. 已安装好Parelles Desktop:
	装一个Debian系统,系统用户名 : parallels,作为一个站点服务。
	装一个Ubuntu系统,系统用户名 : parallels,作为一个站点服务。
2. 在本机安装Nginx, 一个作为负载均衡服务

###配置

####虚拟机是采用 共享网络(Shared Networking) 的模式

#####方便操作虚拟机中的系统,配置ssh登录方式

#####Debian虚拟机

  1. 在虚拟机执行命令,生成ssh相关信息 安装ssh服务: sudo apt-get install openssh-client openssh-server 在命令行输入: ssh-keygen,一路enter生成ssh相关信息

  2. 查看虚拟机IP 在虚拟机执行 : sudo ifconfig

    eth1      ................次要信息省略..............................
              inet addr:10.211.55.8  Bcast:10.211.55.255  Mask:255.255.255.0
              ................次要信息省略..............................
    
  3. 将本机~/.ssh/id_rsa.pub拷贝到虚拟机的~/.ssh/authorized_keys文件中

  4. 输入命令登录到虚拟机 ssh parallels@10.211.55.8

#####Ubuntu虚拟机

  1. 操作方式通Debian虚拟一样 在虚拟机执行 : sudo ifconfig

    eth1      ................次要信息省略..............................
              inet addr:10.211.55.9  Bcast:10.211.55.255  Mask:255.255.255.0
              ................次要信息省略..............................
    

####配置站点,以备负载均衡使用

  1. 配置本机站点(web1) cd /path/to/nginx/conf.d

    vim load_balance.conf
    
    复制如下内容到文件中 :
      server {
          listen       8090;
          server_name  load.demo.com;
          location / {
              root   /path/to/project;
              index  index.html index.htm;
          }
      }
    
    在文件中写入web1:
    	echo "web1" > /path/to/project/index.html
    
    绑定hosts:
    	echo "127.0.0.1	load.demo.com" >> /etc/hosts
    
    在浏览器输入load.demo.com:8090 : 
    	显示 : web1
    
  2. 配置虚拟机中站点(web2) 按照1的配置,设置站点配置;在index.html文件中写入web2

    在浏览器输入load.demo.com:8090 : 
    	显示 : web2
    

####Nginx负载均衡配置

  1. 打开本机的nginx.conf配置文件 vim /path/to/nginx/nginx.conf

  2. 修改nginx.conf对应配置 ................次要信息省略.............................. http { include mime.types; default_type application/octet-stream;

            log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                              '$status $body_bytes_sent "$http_referer" '
                              '"$http_user_agent" "$http_x_forwarded_for"';
    
            access_log  /usr/local/var/log/nginx/access.log  main;
    
            sendfile        on;
            #tcp_nopush     on;
    
            #keepalive_timeout  0;
            keepalive_timeout  65;
    
            ####增加配置##########################################
            upstream load_balance_test {
                server 10.211.55.8:8090 weight=1;
                server 10.211.55.9:8090 weight=1;
            }
            ####增加配置##########################################
            ####更改配置##########################################
            server {
                listen 8090;
                server_name load.demo.com;
                location / {
                proxy_pass http://load_balance_test;
                }
            }
            ####更改配置##########################################
            #gzip  on;
            include /usr/local/etc/nginx/conf.d/*.conf;
        }
    
  3. 绑定hosts echo "127.0.0.1 load.demo.com" >> /etc/hosts

  4. 启动nginx,在浏览器中输入load.demo.com:8090,不停刷新,交替出现web1和web2,成功

###配置过程中遇到问题以及解决方案

1. 链接到虚拟机,但是链接拒绝。ssh localhost提示:ssh: connect to host localhost port 22: Connection refused
	解决方案:
		http://stackoverflow.com/questions/6313929/how-do-i-open-port-22-in-os-x-10-6-7,其实就是开启允许mac远程链接,系统偏好设置->共享->勾选远程登陆

2. 将本机id_rsa.pub拷贝到虚拟机的系统对应位置/path/to/.ssh/authorized_keys,但是一直提示输入密码,但是输入密码却总是连不上
	通过ssh -vvv user@remote-ip打印调试信息,信息如下:
		................次要信息省略..............................
		debug1: Trying private key: ~/.ssh/id_dsa
		debug3: no such identity: ~/.ssh/id_dsa: No such file or directory
		................次要信息省略..............................
	解决方案:
		在/etc/ssh/sshd_config找配置项 IdentityFile,如果没有找到就新增;如果找到了有注释#就去掉#的注释;执行IdentityFile配置的私钥key文件:IdentityFile ~/.ssh/id_rsa

转载于:https://my.oschina.net/3233123/blog/853907

相关文章:

  • VS链接错误: LNIK1123
  • Angular 2 DI - IoC DI - 1
  • 百度地图API标注+时间轴组件
  • Hinton神经网络公开课2 The Perceptron learning procedure
  • vs2017常用扩展
  • Hibernate MySQL Timestamp查询时遇到的转换问题
  • IOS开发-KVC
  • 关于FPS游戏痕的问题
  • ajax技术
  • Vue.js学习系列(二十五)-- 循环语句(一)
  • 多线程下载(转)
  • 开源加密解密库比较
  • 某道Pwn(格式化字符串漏洞)
  • 深入分析java web技术内幕----读书笔记(六)
  • 阻塞、非阻塞、同步、异步浅析
  • ES6指北【2】—— 箭头函数
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【面试系列】之二:关于js原型
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • express.js的介绍及使用
  • JAVA SE 6 GC调优笔记
  • JavaScript新鲜事·第5期
  • mongo索引构建
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Vue 动态创建 component
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 给第三方使用接口的 URL 签名实现
  • 基于 Babel 的 npm 包最小化设置
  • 每天一个设计模式之命令模式
  • 算法系列——算法入门之递归分而治之思想的实现
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • (06)Hive——正则表达式
  • (39)STM32——FLASH闪存
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (Python第六天)文件处理
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (力扣)1314.矩阵区域和
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (五)IO流之ByteArrayInput/OutputStream
  • (转)VC++中ondraw在什么时候调用的
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .a文件和.so文件
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Micro Framework初体验(二)
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • :中兴通讯为何成功
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • [20150904]exp slow.txt
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决