网络运维Day13

news2024/10/7 10:13:40

文章目录

  • 部署web服务器
    • 部署虚拟机web1
      • 安装依赖包
      • 解压NGINX压缩包
      • 初始化
      • 编译
      • 编译安装
      • 查看验证
      • 配置动静分离
    • 部署虚拟机web2
      • 安装依赖包
      • 解压NGINX压缩包
      • 初始化
      • 编译
      • 编译安装
      • 查看验证
      • 配置动静分离
  • 配置NGINX七层代理
    • 测试健康检查功能
  • 配置NGINX四层代理
    • 部署代理服务器
  • 总结

部署web服务器

实验准备(网卡名不一定必须为eth0)

  • 可将虚拟机A改名为proxy
  • 可将虚拟机B主机名修改为web1
  • 使用web1克隆web2
主机名IP地址角色
proxyeth0:192.168.8.100 eth1:192.168.4.5代理服务器
web1eth0:192.168.8.101web服务器
web2eth0:192.168.8.102web服务器

web1主机配置IP地址(分配的IP地址以自己的为准)

[root@pc207 ~]# hostnamectl set-hostname web1
[root@web1 ~]# nmcli connection modify ens33 ipv4.method auto \
connection.autoconnect yes
[root@web1 ~]# nmcli connection up  ens33
[root@web1~]# yum clean all
[root@web1 ~]# yum repolist						#查看yum是否可用

web2主机配置IP地址(分配的IP地址以自己的为准)

[root@pc207 ~]# hostnamectl set-hostname web2
[root@web2 ~]# nmcli connection modify ens33 ipv4.method auto \
connection.autoconnect yes
[root@web2 ~]# nmcli connection up  ens33
[root@web2 ~]# yum clean all
[root@web2 ~]# yum repolist						#查看yum是否可用

proxy主机需要配置两个网段8.0和4.0,所以需要两块网卡,eth0和eth1

添加网卡

在这里插入图片描述

在这里插入图片描述

修改新增加网卡eth1的IP地址为:192.168.4.5

[root@som ~]# hostnamectl set-hostname proxy
[root@proxy ~]# nmcli  connection  add  con-name  eth1  ifname  eth1  type ethernet  																	   #添加一张网卡eth1
[root@proxy ~]# nmcli connection delete 有线连接\ 1
[root@proxy ~]# nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.4.5/24 connection.autoconnect yes
[root@proxy ~]# nmcli connection up eth1

此时可以正常从Windows连接虚拟机proxy,web1和web2

将proxy主机上的/root/som.tar.gz拷贝至web1、web2(web1、web2IP地址以自己为准)

[root@proxy ~]# scp /root/som.tar.gz root@192.168.8.101:/root
[root@proxy ~]# scp /root/som.tar.gz root@192.168.8.102:/root

部署虚拟机web1

虚拟机web1源码编译安装NGINX,配置动静分离

安装依赖包

[root@web1 ~]# yum  -y install gcc make pcre-devel openssl-devel

解压NGINX压缩包

  • 采用nginx-1.16.1.tar.gz
[root@web1 ~]# mkdir /root/som
[root@web1 ~]# tar -xf /root/som.tar.gz -C /root/som
[root@web1 ~]# cd som
[root@web1 som]# tar -xf nginx-1.16.1.tar.gz
[root@web1 som]# cd nginx-1.16.1

初始化

[root@web1 nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module

编译

[root@web1 nginx-1.16.1]# make

编译安装

[root@web1 nginx-1.16.1]# make install

查看验证

[root@web1 ~]# ls /usr/local/nginx/
conf sbin html logs

配置动静分离

安装软件

[root@web1 ~]# yum -y install mariadb mariadb-server mariadb-devel 
[root@web1 ~]# yum -y install php   php-mysql php-fpm

启动Nginx服务

[root@web1 ~]# /usr/local/nginx/sbin/nginx

启动MySQL服务,设置开机自启

[root@web1 ~]# systemctl restart  mariadb           
[root@web1 ~]# systemctl enable mariadb       

启动PHP-FPM服务,设置开机自启

[root@web1 ~]# systemctl restart php-fpm 
[root@web1 ~]# systemctl enable php-fpm 
[root@web1 ~]# ss -utnlp | grep :80
[root@web1 ~]# ss -utnlp | grep :3306
[root@web1 ~]# ss -utnlp | grep :9000

修改Nginx配置文件并启动服务

[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf 
server {

 location  ~  \.php$  {
        root           html;
        fastcgi_pass   127.0.0.1:9000;    	#将请求转发给本机9000端口,PHP解释器
        fastcgi_index  index.php;
        #fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi.conf;       	#加载其他配置文件
      }
[root@web1 ~]# /usr/local/nginx/sbin/nginx -s reload

创建PHP页面,测试LNMP架构能否解析PHP页面

创建PHP测试页面:

[root@web1 ~]# vim /usr/local/nginx/html/test.php
<?php
$i=33;
echo $i;
?>

访问测试(自己访问自己的IP,不要照抄)

[root@web1 ~]# curl 192.168.8.101/test.php

部署虚拟机web2

虚拟机web2源码编译安装NGINX,配置动静分离

安装依赖包

[root@web2 ~]# yum  -y install gcc make pcre-devel openssl-devel

解压NGINX压缩包

  • 采用nginx-1.16.1.tar.gz
[root@web2 ~]# mkdir /root/som
[root@web2 ~]# tar -xf /root/som.tar.gz -C /root/som
[root@web2 ~]# cd som
[root@web2 som]# tar -xf nginx-1.16.1.tar.gz
[root@web2 som]# cd nginx-1.16.1

初始化

[root@web2 nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module

编译

[root@web2 nginx-1.16.1]# make

编译安装

[root@web2 nginx-1.16.1]# make install

查看验证

[root@web2 ~]# ls /usr/local/nginx/
conf sbin html logs

配置动静分离

安装软件

[root@web2 ~]# yum -y install mariadb mariadb-server mariadb-devel 
[root@web2 ~]# yum -y install php   php-mysql php-fpm

启动Nginx服务

[root@web2 ~]# /usr/local/nginx/sbin/nginx

启动MySQL服务,设置开机自启

[root@web2 ~]# systemctl restart  mariadb           
[root@web2 ~]# systemctl enable mariadb       

启动PHP-FPM服务,设置开机自启

[root@web2 ~]# systemctl restart php-fpm 
[root@web2 ~]# systemctl enable php-fpm 
[root@web2 ~]# ss -utnlp | grep :80
[root@web2 ~]# ss -utnlp | grep :3306
[root@web2 ~]# ss -utnlp | grep :9000

修改Nginx配置文件并启动服务

[root@web2 ~]# vim /usr/local/nginx/conf/nginx.conf 
server {

 location  ~  \.php$  {
        root           html;
        fastcgi_pass   127.0.0.1:9000;    	#将请求转发给本机9000端口,PHP解释器
        fastcgi_index  index.php;
        #fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi.conf;       	#加载其他配置文件
      }
[root@web2 ~]# /usr/local/nginx/sbin/nginx -s reload

创建PHP页面,测试LNMP架构能否解析PHP页面

创建PHP测试页面:

[root@web2 ~]# vim /usr/local/nginx/html/test.php
<?php
$i=88;
echo $i;
?>

访问测试(自己访问自己的IP,不要照抄)

[root@web2 ~]# curl 192.168.8.101/test.php

配置NGINX七层代理

  • 部署代理服务器,安装nginx服务,在这里由于proxy主机是之前的虚拟机A,nginx是已经安装好的,这里不再安装,如果是新的机器则需要重新安装

在这里插入图片描述

配置Nginx服务器,添加服务器池,实现反向代理功能, 使用upstream定义后端服务器集群,集群名称任意(如servers),使用server定义集群中的具体服务器和端口

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf

upstream servers {                   #upstream模块要写到http的里面
    server 192.168.8.101:80;		 #自己web1的主机IP地址
    server 192.168.8.102:80;		 #自己web2主机的IP地址
}
   server {
      listen       80;
      server_name  localhost;
      location / {
          proxy_pass http://servers;     #通过proxy_pass将用户的请求转发给servers集群
       root   html;
       index  index.php index.html index.htm;
      }

#由于proxy主机是web克隆出来的,所以需要把nginx配置文件里面的解析动态页面的配置注释掉
	#location ~ \.php$ {
	#    root           html;
	#    fastcgi_pass   127.0.0.1:9000;
	#    fastcgi_index  index.php;
	#    include        fastcgi.conf;
	#}
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload	#重新加载

浏览器测试,反复访问代理服务器测试效果

http://192.168.4.5/test.php

测试健康检查功能

模拟web故障,将web1 的nginx关闭

[root@web1 ~]# /usr/local/nginx/sbin/nginx -s stop

测试,访问的是web2的内容

http://192.168.4.5/test.php

将web1 的nginx启动

[root@web1 ~]# /usr/local/nginx/sbin/nginx

测试,web1和web2的内容出现

http://192.168.4.5/test.php

配置upstream服务器集群池属性

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
……
upstream webserver {
	server 192.168.8.101:80 weight=2;
	server 192.168.8.102:80 max_fails=2 fail_timeout=30;
    }
#weight设置服务器权重值,默认值为1
#max_fails设置最大失败次数,测试服务器几次才确认服务器失败
#fail_timeout设置失败超时时间,单位为秒
#down标记服务器已关机,不参与集群调度
……

客户端反复访问代理服务器测试效果,web1 和web2都可以访问

http://192.168.4.5/test.php

模拟web2宕机

[root@web2 ~]# /usr/local/nginx/sbin/nginx -s stop

浏览器测试,只有web1提供页面

开机web2,20秒之后才能访问web2

[root@web2 ~]# /usr/local/nginx/sbin/nginx

配置NGINX四层代理

在这里插入图片描述

部署代理服务器

  • 部署支持4层TCP/UDP代理的Nginx服务器

  • 部署nginx服务器

编译安装必须要使用–with-stream参数开启4层代理模块。

[root@proxy ~]# /usr/local/nginx/sbin/nginx -s stop #停止Nginx服务
[root@proxy ~]# rm -rf /usr/local/nginx/            #清理环境
[root@proxy ~]# cd som/nginx-1.16.1/
[root@proxy nginx-1.16.1]# ./configure --with-http_ssl_module  --with-stream        
													#开启SSL加密功能,开启4层反向代理功能
[root@proxy nginx-1.16.1]# make 					#编译
[root@proxy nginx-1.16.1]# make install             #编译并安装
  • 配置Nginx服务器,添加服务器池,实现TCP/UDP反向代理功能

  • 在这里我们的配置不再是使用http协议,所以不能在配置到http里面

[root@proxy nginx-1.16.1]# vim /usr/local/nginx/conf/nginx.conf       
stream {
      upstream backend {
            server 192.168.8.101:22;        	#后端SSH服务器的IP和端口
            server 192.168.8.102:22;
      }
      server {
              listen 12345;                     #Nginx监听的端口
              proxy_pass backend;
      }
}
http {

.. ..

启动nginx

[root@proxy nginx-1.16.1]# /usr/local/nginx/sbin/nginx

客户端使用访问代理服务器测试轮询效果

[root@proxy nginx-1.16.1]# ssh 192.168.4.5 -p 12345
root@192.168.4.5's password: 
[root@web1 ~]# exit
[root@proxy nginx-1.16.1]# ssh 192.168.4.5 -p 12345
root@192.168.4.5's password: 
[root@web2 ~]#

总结

  • 掌握NGINX七层代理
  • 掌握NGINX四层代理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1206211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue中cli组件如何自定义定义

目录 创建自定义组件 注册并使用自定义组件 注册组件&#xff1a; 在需要使用该组件的页面或父组件中注册并引入自定义组件。 使用 Props 传递数据 总结步骤&#xff1a; 前言 在Vue CLI中使用自定义组件是构建交互式和模块化Web应用的重要一环。Vue CLI为开发者提供了使用…

RocketMQ底层通信机制

分布式系统各个角色间的通信效率很关键&#xff0c;通信效率的高低直接影响系统性能&#xff0c;基于Socket实现一个高效的TCP通信协议是很有挑战的&#xff0c;本节介绍RocketMQ是如何解决这个问题的。 1.Remoting模块 RocketMQ的通信相关代码在Remoting模块里&#xff0c;先…

Linkage Mapper 报错

1 . 错误提示&#xff1a;“No module named lm_config” 错误原因&#xff1a;**** 2.错误提示&#xff1a;“Cannot find an installation of Circuitscape in your Program Files directory.” 错误原因&#xff1a;***** 3. 错误提示&#xff1a;UnicodeEncodeError: ‘asc…

Windows 微PE WePE_64_V2.3 PE模式下启用账号和修改密码

启动PE后&#xff0c;进入桌面打开运行dism程序 选择带有系统的盘符&#xff08;默认选的是PE盘&#xff09;&#xff0c;然后打开会话 选择左侧工具箱&#xff0c;然后右侧找到账户管理 然后就可以对已有账号进行管理了 结束。

Java SE 封装、包、static关键字和代码块

1.封装 1.1封装的概念 面向对象程序三大特性&#xff1a;封装、继承、多态。而类和对象阶段&#xff0c;主要研究的就是封装特性。何为封装呢&#xff1f;简单来说 就是套壳屏蔽细节。 封装&#xff1a;将数据和操作数据的方法进行有机结合&#xff0c;隐藏对象的属性和实现细…

springboot-error

Invalid bound statement (not found): com.example.demo.mapper.UserMapper.findAll 一直报错&#xff0c;找不到相应的mapper文件。 排除以下原因之后&#xff0c;还是不对&#xff1a; https://blog.csdn.net/xxpxxpoo8/article/details/127548543 最后发现是因为我的mapp…

云原生实战课大纲

1. 云原生是什么 原生应用&#xff08;java,pyrhon&#xff09; 上云的过程应用上云遇到的问题1.微服务的拆分 微服务的访问关系应用的架构云原生适合什么样的人去学具备什么样的前提条件云原生要学习什么docker k8s devlops server mesh jks k8s监控吧自己的微服务上云另…

聊聊leetcode可包含重复数字的序列的《47. 全排列 II》中的vis标记函数

1 题目描述&#xff08;字节二面题目&#xff09; 2 代码 class Solution {List<List<Integer>>res;List<Integer>list;boolean[]used;public List<List<Integer>> permuteUnique(int[] nums) {resnew ArrayList<>();listnew ArrayList&l…

PHP中$_SERVER全局变量

在PHP中&#xff0c;$_SERVER 是一个全局数组变量&#xff0c;它包含了有关服务器和当前脚本的信息。$_SERVER 数组中的每个元素都是服务器环境的一个参数&#xff0c;如请求的方法、请求的 URI、客户端 IP 地址等。 PATH 系统环境变量的值&#xff0c;包含了多个目录的路径…

SaaS 电商设计 (三) 如何做大促压测

一.背景&目标 1.1 常见的压测场景 电商大促:一众各大厂的促销活动场景,如:淘宝率先推出的天猫双11,而后京东拉出的京东 618 .还是后续陆陆续续的一些年货节, 3.8 女神节等等.都属于一些常规的电商大促 票务抢购:常见的如承载咱们 80,90 青春回忆的 Jay 的演唱会,还有普罗…

Docker - 容器数据卷

Docker - 容器数据卷 什么是容器数据卷 等同于挂载&#xff0c;将容器内的目录地址指向于宿主机文件系统中 直接使用命令来挂载 -v docker run -it -v 主机目录:容器内目录# 测试 docker run -it -v /root:/home centos /bin/bash [rootiZ2zeg7mctvft5renx1qvbZ ~]# docker …

求最大公约数math.gcd()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 求最大公约数 math.gcd() [太阳]选择题 下列代码执行输出的结果是&#xff1f; import math print("【执行】print(math.gcd(6, 8))") print(math.gcd(6, 8)) print(&quo…

vue3项目 Element-Plus DatePicker日期选择器组件限制只能选择7天内

需求&#xff1a;时间选择器 只能选择7天及以内 <template><el-date-pickerv-model"valueDate"type"daterange"range-separator"⇀"start-placeholder"开始日期"end-placeholder"结束日期"format"YYYY-MM-DD&…

保姆级Decimal.js的使用(如何解决js精度问题)

精度问题控制台图样 如果银行的业务你这样做&#xff0c;不知道要损失多少钱&#xff0c;这样是不行的&#xff0c;计算的不准确是需要背锅的&#xff0c;我们给后端去做吧&#xff0c;其实我们前端也是可以做的&#xff0c;引入Decimal.js 01.引入Decimal.js decimal.js是使用…

用户日期格式不一致导致BDC报时间格式不一致问题

问题描述 在做销售开票的功能时用的BDC&#xff0c;业务在测试的时候总是报日期格式不一致的错误&#xff0c;而我自己测的时候却没啥问题&#xff0c;调试的时候发现是我和业务的时间格式不一致&#xff08;我是YYYYMMDD,他是MMDDYYYY&#xff09;。 解决方案 用函数CONVERT…

博捷芯BJCORE:国内划片机品牌优势

国内划片机品牌在半导体设备制造领域奋起直追&#xff0c;展现出以下几个优势&#xff1a; 1. 技术提升&#xff1a;国内划片机品牌在技术上持续取得突破&#xff0c;例如设备精准度和切割精度的提高&#xff0c;可以在短时间内完成大量加工&#xff0c;提高了生产效率。 2. 适…

Python 如何实现访问者设计模式?什么是访问者(Visitor)模式?实际案例中有什么作用?

什么是访问者设计模式&#xff1f;访问者&#xff08;Visitor&#xff09;设计模式介绍&#xff1a; 访问者&#xff08;Visitor&#xff09;设计模式是一种行为设计模式&#xff0c;用于在不修改被访问对象的前提下定义新的操作。它通过将操作封装到独立的访问者类中&#xf…

centos7安装pandora

因为需要python3.7以上的环境所以下载minicanda安装脚本 1.下载地址 https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py38_4.9.2-Linux-x86_64.sh把脚本上传到服务器 2&#xff0c;给.sh文件添加x执行权限 sudo chmod ux Miniconda3-py38_4.9.2-Linu…

【汇编】汇编语言的介绍

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、汇编是什么&#xff1f;二、为什么要学习汇编语言&#xff1f;三、学习汇编语言的好处四、安装汇编环境4.1 下载虚拟环境4.2 配置虚拟环境 总结 前言 计算…

瑞吉外卖01-实现管理端登录登出功能

开发前准备 准备数据表 结合页面原型创建数据库reggie,可以使用图形化界面或者MySQL命令运行SQL文件导入表结构(使用命令时sql文件不要放在中文目录中) 创建工程 创建一个SpringBoot的工程(勾选Spring Web&#xff0c;MySQL和MyBatis),配置pom.xml文件导入druid&#xff0c;…