Nginx的功能与特性,第1张

Nginx在过去的10年里,作为Web服务器行业里的新生代迅速崛起。Nginx由俄罗斯工程师Igor Sysoev编写,2004年10月4日发布了第一个公众版本:101。Apache一直占据Web服务器行业的第一,但自2008年开始,它的市场份额在潜移默化的转移到Nginx身上。直至今日,据Netcraft的统计显示,全世界排名前100万的网站中有超过27%的网站在使用Nginx作为Web服务器。Nginx迅速在一向稳定的Web服务器行业崛起并站稳跟脚

1 、静态HTTP服务器

Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、)通过HTTP协议展现给客户端。

2、反向代理服务器

客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端,此时Nginx就是反向代理服务器。

3、负载均衡

当网站访问量非常大,将同一个应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。同时带来的好处是,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。Nginx可以通过反向代理来实现负载均衡,并能使用3种自带策略及2种第三方策略。

(1)RR(默认,每个请求按时间顺序逐一分配到不同的后端服务器)

(2)权重(指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况)

(3)ip-hash(以上配置会将请求轮询分配到应用服务器,也就是一个客户端的多次请求,有可能会由多台不同的服务器处理(若存在登录session时则需要重复登录)。ip-hash根据客户端ip地址的hash值将请求分配给固定的某一个服务器处理)

(4)fair(第三方 按后端服务器的响应时间来分配请求,响应时间短的优先分配)

(5)url_hash(第三方 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法)

4、虚拟主机

有的网站访问量大,需要负载均衡。有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。例如将wwwacom和wwwbcom两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。

在服务器8080和8081分别开了一个应用,客户端通过不同的域名访问,根据server_name可以反向代理到对应的应用服务器。虚拟主机的原理是通过HTTP请求头中的Host是否匹配server_name来实现的,另外,server_name配置还可以过滤有人恶意将某些域名指向你的主机服务器。

1、IO多路复用epoll

2、轻量级

3、CPU亲和(affinity)

4、sendfile

SSL证书可以安装多台独立服务器,不限制服务器安装次数。但一台服务器只能安装1个SSL证书,多个域名需要在一台服务器实现,需要使用多域名证书或通配符类型证书。

单域名版、多域名版和通配符版SSL证书之间的区别相关了解:网页链接

这种部署方式都需要一个前端代理服务器,前端代理有很多是用squid或者nginx做的,超有钱的会用netscaler。

像你这种情况,只有两台服务器,就没必要考虑单点故障了,sql server部署到一台服务器上,另一台服务器上部署web 程序就可以了。

两台服务器手动部署大数据平台

##### 初始服务器数量

- 2台centos7

##### 建议配置

- 32G(RAM)

- 24cpu

- 10t(SATA)

### 1环境

- 系统centos7

- jdk:180_171(64位)

- zookeeper:348

- spark-210-bin-hadoop26

- kafka_210-01021

- hadoop-270

- hbase-126

- elasticsearch-630

### 2系统准备

对应的安装包文件:

elasticsearch-630targz

hadoop-270targz

hbase-126-bintargz

jdk-8u171-linux-x64targz

kafka_210-01021tgz

mysql-5723-1el7x86_64rpm-bundletar

spark210hadoop26tgzgz

zookeeper-348targz

一、 配置好hosts

```

两台设备的host

ip1 hello1

ip2 hello2

关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

二、机器之间做好免密

1 在hello1服务器中,cd /root/

2 ssh-keygen -trsa  (全部按回车,走默认配置)

3 cat ~/ssh/id_rsapub >> ~/ssh/authorized_keys

4 chmod 600 ~/ssh/authorized_keys

5 scp ~/ssh/authorized_keys root@hello2:~/ssh/

到此处时可以实现hello1机器上通过root账户登录到hello2中,但从hello2中无法通过免密码登录到hello1服务器。

6 在hello2服务器中,cd /root/

7 ssh-keygen -trsa  (全部按回车,走默认配置)

8 cat ~/ssh/id_rsapub >> ~/ssh/authorized_keys

9 scp ~/ssh/authorized_keys root@hello1:~/ssh/

到此处时可以实现hello1机器与hello2机器之间免密码互通

三、建立一个用户操作elasticsearch用户,后期所有安装软件放在该目录下(当前使用root账户安装)

1添加用户:

useradd -m -s /bin/bash es

2为该用户设置密码:

password es

四、安装JDK

如果系统自带openjdk,先将其卸载掉!

1创建jdk安装路径(hello1、hello2都执行)

执行: mkdir /usr/java

2解压缩jdk到安装目录

执行: tar -zxvf jdk-8u171-linux-x64targz -C /usr/java/

3添加环境变量

vi /etc/profile,添加以下语句

export JAVA_HOME=/usr/java/jdk180_171

export CLASSPATH=:$JAVA_HOME/lib/dtjar:$JAVA_HOME/lib/toolsjar

export PATH=$PATH:$JAVA_HOME/bin

执行:source /etc/profile

4复制安装包和数据目录到hello2

scp  -r /usr/java/jdk180_171 hello2:/usr/java/

scp /etc/profile hello2:/etc/

登录到hello2上,进入/home/es目录

执行: source /etc/profile

5、验证:

两台服务器上分别执行: java -version,查看输出的版本是否与安装的版本一致。

五、安装mysql

1如果centos系统中自带mariadb,先卸载mariadb。

2解压mysql安装包程序

执行:tar -xvf  mysql-5723-1el7x86_64rpm-bundletar

3依次安装里面rpm包组建

rpm -ivh mysql-community-common-5723-1el7x86_64rpm

rpm -ivh mysql-community-libs-5723-1el7x86_64rpm

rpm -ivh mysql-community-client-5723-1el7x86_64rpm

rpm -ivh mysql-community-server-5723-1el7x86_64rpm

rpm -ivh mysql-community-devel-5723-1el7x86_64rpm

4启动MySQL

执行: systemctl start mysqld

5登录mysql服务器

这种方式安装好后,会再mycnf文件中自动生成一个密码,

执行:cat /var/log/mysqldlog | grep password, 出现如下记录:

2017-09-15T01:58:11863301Z 1 [Note] A temporary password is generated for root@localhost: m-NdrSG4ipuO

其中“m-NdrSG4ipuO”为mysql root账户的初始密码。

登录:

执行: mysql -uroot -p

输入密码: m-NdrSG4ipuO,即可进入mysql服务器。

后续可自行修改root密码,创建新账户等操作。

六、安装zookeeper

1解压zookeeper安装包到指定目录(/home/es)

tar -zxvf zookeeper-348targz -C /home/es

2创建程序软连接

cd /home/es/

ln -s zookeeper-348 zookeeper

3添加执行路径环境

vi /etc/profile

添加

export ZOOKEEPER_HOME=/home/es/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin

执行

source /etc/profile

4修改配置文件

cd /home/es/zookeeper

cp conf/zoo_samplecfg conf/zoocfg

在/home/data下创建对应的zookeeper数据存储目录

mkdir /home/data/zookeeper

mkdir /home/data/zookeeper/data

mkdir /home/data/zookeeper/log

修改配置文件:conf/zoocfg,添加以下语句

dataDir=/home/data/zookeeper/data

dataLogDir=/home/data/zookeeper/log

server1=hello1:2888:3888

server2=hello2:2888:3888

5创建server表示符文件

touch /home/data/zookeeper/data/myid

echo echo 1>/home/data/zookeeper/data/myid

6复制安装包和数据目录到hello2

scp -r /home/es/zookeeper-348 es@hello2:/home/es

scp -r /home/data/zookeeper es@hello2:/home/data

scp  /etc/profile es@hello2:/etc

登录到hello2上

cd /home/es

ln -s zookeeper-348 zookeeper

echo echo 2>/home/data/zookeeper/data/myid

执行

source /etc/profile

7两台机器上分别执行

zkServersh start

8验证

jps | grep QuorumPeerMain,查看是否有该进程

zkServersh status,查看服务状态

六、安装kafka

1解压kafka安装包到指定目录(/home/es)

tar -zxvf kafka_210-01021tgz -C /home/es

2创建程序软连接

cd /home/es/

ln -s kafka_210-01021 kafka

3修改配置文件

备份:

cp config/serverproperties config/serverpropertiesbak

创建kafka日志目录:

mkdir /home/data/kafka

mkdir /home/data/kafka/kafka-logs

修改:config/serverproperties,具体对应字段如下:

brokerid=0

deletetopicenable=true

numnetworkthreads=10

numiothreads=32

socketsendbufferbytes=102400

socketreceivebufferbytes=102400

socketrequestmaxbytes=104857600

logdirs=/home/data/kafka/kafka-logs

numpartitions=1

numrecoverythreadsperdatadir=1

logretentionhours=168

logsegmentbytes=1073741824

logretentioncheckintervalms=300000

zookeeperconnect=hello1:2181,hello2:2181

zookeeperconnectiontimeoutms=6000

6复制安装包和数据目录到hello2

scp -r /home/es/kafka_210-01021 es@hello2:/home/es

scp -r /home/data/kafka es@hello2:/home/data

修改hello2中的配置

登录到hello2上,cd /home/es/kafka,修改config/serverproperties中brokerid值为2

7启动kafka

在两台机器的/home/es/kafka中,创建一个日志存放目录:mkdir start_log,执行以下命令:

nohup bin/kafka-server-startsh config/serverproperties > start_log/kafka_start_log 2>&1 &

8验证运行情况

jps | grep Kafka,查看进程

通过kafka命令查看topic。

七、安装hadoop

1解压hadoop安装包到指定目录(/home/es)

tar -zxvf hadoop-270targz -C /home/es

2创建程序软连接

cd /home/es/

ln -s hadoop-270 hadoop

3创建数据存放目录

mkdir /home/data/hadoop

mkdir /home/data/hadoop/tmp

mkdir /home/data/hadoop/dfs

mkdir /home/data/hadoop/dfs/data

mkdir /home/data/hadoop/dfs/name

4修改配置文件

修改/home/es/hadoop/etc/hadoop/core-sitexml

<configuration>

<property>

<name>fsdefaultFS</name>

<value>hdfs://hello1:9000</value>

</property>

<property>

<name>hadooptmpdir</name>

<value>file:/home/data/hadoop/tmp</value>

</property>

<property>

<name>iofilebuffersize</name>

<value>131702</value>

</property>

</configuration>

修改/home/es/hadoop/etc/hadoop/hdfs-sitexml

<configuration>

<property>

<name>dfsnamenodenamedir</name>

<value>file:/home/data/hadoop/dfs/name</value>

</property>

<property>

<name>dfsdatanodedatadir</name>

<value>file:/home/data/hadoop/dfs/data</value>

</property>

<property>

<name>dfsreplication</name>

<value>2</value>

</property>

<property>

<name>dfsnamenodesecondaryhttp-address</name>

<value>hello1:9001</value>

</property>

<property>

<name>dfswebhdfsenabled</name>

<value>true</value>

</property>

</configuration>

修改/home/es/hadoop/etc/hadoop/mapred-sitexml

<configuration>

<property>

<name>mapreduceframeworkname</name>

<value>yarn</value>

</property>

<property>

<name>mapreducejobhistoryaddress</name>

<value>hello1:10020</value>

</property>

<property>

<name>mapreducejobhistorywebappaddress</name>

<value>hello1:19888</value>

</property>

</configuration>

修改/home/es/hadoop/etc/hadoop/yarn-sitexml

<configuration>

<!-- Site specific YARN configuration properties -->

<property>

<name>yarnnodemanageraux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarnnodemanagerauxservicesmapreduceshuffleclass</name>

<value>orgapachehadoopmapredShuffleHandler</value>

</property>

<property>

<name>yarnresourcemanageraddress</name>

<value>hello1:8032</value>

</property>

<property>

<name>yarnresourcemanagerscheduleraddress</name>

<value>hello1:8030</value>

</property>

<property>

<name>yarnresourcemanagerresource-trackeraddress</name>

<value>hello1:8031</value>

</property>

<property>

<name>yarnresourcemanageradminaddress</name>

<value>hello1:8033</value>

</property>

<property>

<name>yarnresourcemanagerwebappaddress</name>

<value>hello1:8088</value>

</property>

<property>

<name>yarnnodemanagerresourcememory-mb</name>

<value>768</value>

</property>

</configuration>

配置/home/es/hadoop/etc/hadoop目录下hadoop-envsh、yarn-envsh的JAVA_HOME(不设置的话,启动不了)

export JAVA_HOME=/usr/java/jdk180_171

配置/home/es/hadoop/etc/hadoop目录下的slaves,删除默认的localhost,增加2个从节点

hello1

hello2

5、将配置好的Hadoop复制到各个节点对应位置上,通过scp传送

scp  -r /home/es/hadoop-270 hello2:/home/es/

scp  -r /home/data/hadoop hello2:/home/data/

登录到hello2上,进入/home/es目录

执行: ln -s hadoop-270 hadoop

6、格式化nameNode及启动hadoop

在主服务器启动hadoop,从节点会自动启动,进入/home/es/hadoop目录

初始化,输入命令,bin/hdfs namenode -format

全部启动sbin/start-allsh,也可以分开sbin/start-dfssh、sbin/start-yarnsh

输入命令,jps,可以看到相关信息

7、验证hadoop运行情况

浏览器打开http://hello1:8088/

浏览器打开http://hello1:50070/

8、添加hadoop环境变量到/etc/profile

export HADOOP_HOME=/home/es/hadoop export PATH=$PATH:$HADOOP_HOME/sbin

export PATH=$PATH:$HADOOP_HOME/bin

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export HADOOP_OPTS="-Djavalibrarypath=$HADOOP_HOME/lib/native"

执行: source /etc/profile

八、安装Hbase

1解压hbase安装包到指定目录(/home/es)

tar -zxvf hbase-126-bintargz -C /home/es

2创建程序软连接

cd /home/es/

ln -s hbase-126 hbase

3添加hbase环境变量到/etc/profile

export  HBASE_HOME=/home/es/hbase

 export  PATH=$HBASE_HOME/bin:$PATH

执行:source /etc/profile

4修改HBASE配置文件

vi /home/es/hbase/conf/hbase-envsh

增加: export JAVA_HOME=/usr/java/jdk180_171

修改: export HBASE_MANAGES_ZK=false

vi /home/es/hbase/conf/hbase-sitexml

修改类容:

<configuration>

<property>

      <name>hbaserootdir</name> <!-- hbase存放数据目录 -->

      <value>hdfs://hello1:9000/hbase/hbase_db</value>

      <!-- 端口要和Hadoop的fsdefaultFS端口一致-->

    </property>

    <property>

      <name>hbaseclusterdistributed</name> <!-- 是否分布式部署 -->

      <value>true</value>

    </property>

    <property>

      <name>hbasezookeeperquorum</name> <!-- list of  zookooper -->

      <value>hello1,hello2</value>

    </property>

     <property><!--zookooper配置、日志等的存储位置 -->

        <name>hbasezookeeperpropertydataDir</name>

        <value>/home/es/hbase/zookeeper</value>

     </property>

</configuration>

配置regionservers,vi /home/es/hbase/conf/regionservers

去掉默认的localhost,加入hello1、hello2

5、将配置好的hbase复制到各个节点对应位置上,通过scp传送

scp  -r /home/es/hbase-126 hello2:/home/es/

scp /etc/profile hello2:/etc/

登录到hello2上,进入/home/es目录

执行: ln -s hbase-126 hbase

source /etc/profile

6、hbase的启动

hello1中执行: start-hbasesh

7、验证hbase运行情况

输入jps命令查看进程是否启动成功,若 hello1上出现HMaster、HRegionServer、HQuormPeer,hello2上出现HRegionServer、HQuorumPeer,就是启动成功了。

输入hbase shell 命令 进入hbase命令模式,输入status命令,查看运行状态。

在浏览器中输入http://hello1:16010就可以在界面上看到hbase的配置

注意事项:

正常安装后,创建普通不带压缩表可以正常读写,当使用snappy进行压缩创建表时,该表无法再regionServer中启动!

解决方法:

1在hbase-sitexml文件中添加一下属性

<property>

                <name>hbaseregionservercodecs</name>

                <value>snappy</value>

        </property>

2每台机器中将hadoop_nativezip解压缩到hbase安装目录的lib下,执行 unzip hadoop_nativezip $HBASE_HOME/lib/

3在$HBASE_HOME/conf/hbase-envsh 中添加:export HBASE_LIBRARY_PATH=/home/es/hbase/lib/native

4重启Hbase服务即可

九、Spark安装

1解压hbase安装包到指定目录(/home/es)

tar -zxvf spark210hadoop26tgzgz -C /home/es

2创建程序软连接

cd /home/es/

ln -s spark210hadoop26 spark

3修改配置文件

mv /home/es/spark/conf/spark-envshtemplate  /home/es/spark/conf/spark-envsh

vi /home/es/spark/conf/spark-envsh

修改对应配置:

export JAVA_HOME=/usr/java/jdk180_171

export SPARK_MASTER_IP=hello1

export SPARK_MASTER_PORT=7077

export SPARK_LOCAL_IP=hello1

修改slaves文件

mv /home/es/spark/conf/slavestemplate  /home/es/spark/conf/slaves

vi /home/es/spark/conf/slaves

将localhost修改成:

hello1

hello2

5、将配置好的hbase复制到各个节点对应位置上,通过scp传送

scp  -r /home/es/spark210hadoop26 hello2:/home/es/

登录到hello2上,进入/home/es目录

执行: ln -s spark210hadoop26 spark

在hello2中修改/home/es/spark/conf/spark-envsh

export JAVA_HOME=/usr/java/jdk180_171

export SPARK_MASTER_IP=hello1

export SPARK_MASTER_PORT=7077

export SPARK_LOCAL_IP=hello2

6、启动spark

cd /home/es/spark

执行: sbin/start-allsh

7、检测执行结果

jps | grep Worker,看是否有相应的进程。

十、安装elasticsearch

由于elasticsearch,用root账户无法启动,故该组件用es账户安装

1、切换到es账户: su es

2、解压hbase安装包到指定目录(/home/es)

tar -zxvf elasticsearch-630targz -C /home/es/

创建程序软连接

cd /home/es/

ln -s elasticsearch-630 elasticsearch

3、修改配置文件

vi /home/es/elasticsearch/config/elasticsearchyml

# 集群的名字 

clustername: crrc-health

# 节点名字 

nodename: node-1 

# 数据存储目录(多个路径用逗号分隔) 

pathdata: /home/data1/elasticsearch/data

# 日志目录 

pathlogs: /home/data1/elasticsearch/logs

#本机的ip地址

networkhost: hello1 

#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点

discoveryzenpingunicasthosts: ["hello1", "hello2"]

# 设置节点间交互的tcp端口(集群),(默认9300) 

transporttcpport: 9300

# 监听端口(默认) 

httpport: 9200

# 增加参数,使head插件可以访问es 

httpcorsenabled: true

httpcorsallow-origin: ""

4、创建elasticsearch数据和存储目录

mkdir /home/data1/elasticsearch

mkdir /home/data1/elasticsearch/data

mkdir /home/data1/elasticsearch/logs

5、修改linux系统的默认硬限制参数

切换至root用户: su root

vim /etc/security/limitsconf

添加:

es soft nofile 65536

es hard nofile 65536

退出es登录,重新用es账户登录,使用命令:ulimit -Hn查看硬限制参数。

vi /etc/sysctlconf

添加:

vmmax_map_count=655360

执行:

sysctl -p

6、将配置好的elasticsearch复制到各个节点对应位置上,通过scp传送

scp  -r /home/es/elasticsearch-630 hello2:/home/es/

scp  -r /home/data1/elasticsearch hello2:/home/data1/

登录到hello2上,进入/home/es目录

执行: ln -s elasticsearch-630 elasticsearch-630

在hello2中修改/home/es/elasticsearch/config/elasticsearchyml

修改: networkhost: hello2

7、启动elasticsearch

使用es账户

执行:

/home/es/elasticsearch/bin/elasticsearch -d

8、验证

控制台中输入:curl http://hello1:9200

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Nginx的功能与特性

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情