国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

主流開源軟件部署方案

IT那活兒 / 2581人閱讀
主流開源軟件部署方案


一. 選型

1.  反向代理服務器

Nginx 是一個高性能的HTTP和反向代理web服務器,因它的穩定性、豐富的功能集、簡單的配置文件和低系統資源的消耗而聞名。Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行。其特點是占有內存少,并發能力強,事實上nginx的并發能力在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。Nginx是同類型軟件中應用范圍最廣的開源類的反向代理服務器。

2.  web應用服務器

Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。目前生產中如果不是應用于容器和微服務,在同類型web應用服務器中Tomcat是一個不錯的選擇。

3.  內存數據庫

Redis是一個高性能的key-value數據庫。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。

區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現了master-slave(主從)同步。redis的出現,很大程度補償了memcached這類key/value存儲的不足,在部分場合可以對關系數據庫起到很好的補充作用。Redis支持主從同步。數據可以從主服務器向任意數量的從服務器上同步,從服務器可以是關聯其他從服務器的主服務器。Redis還支撐集群。redis-cluster采用無中心結構,每個節點都維護著集群的信息,并且節點之間互相通信;節點的 fail 是通過集群中超過半數的節點檢測失效時才生效無需人為干擾;客戶端與redis節點直連不需要中間proxy層,client根據node返回的錯誤信息重定向請求;redis-cluster實現了故障轉移、負載均衡、高可用性、高并發等功能

4.  關系型數據庫

MySQL 是最流行的關系型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關系數據庫管理系統) 應用軟件之一。MySQL所使用的 SQL 語言是用于訪問數據庫的最常用標準化語言。MySQL 軟件采用了雙授權政策,分為社區版和商業版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站數據庫。與其他的大型數據庫例如 Oracle、DB2、SQL Server等相比,MySQL [1]  自有它的不足之處,但是這絲毫也沒有減少它受歡迎的程度。對于一般的個人使用者和中小型企業來說,MySQL提供的功能已經綽綽有余,而且由于 MySQL是開放源碼軟件,因此可以大大降低總體擁有成本。

Linux作為操作系統,Apache 或Nginx作為 Web 服務器,MySQL 作為數據庫,PHP/Perl/Python作為服務器端腳本解釋器。由于這四個軟件都是免費或開放源碼軟件(FLOSS),因此使用這種方式不用花一分錢(除開人工成本)就可以建立起一個穩定、免費的網站系統,被業界稱為“LAMP“或“LNMP”組合。


二. 系統基本要求

1.  系統要求

RHEL 6.5 / CENTOS 6.5 及以上

2.  軟件要求

開源軟件生產安裝要求一般要求最新穩定版本,以下安裝版本是目前要求版本,具體如下所示:

Nginx1.20.1、jdk1.8.0_144、Tomcat-8.5.71、keepalive-2.1.0、redis5.0.13、mysql5.7.35

依賴:針對不同的軟件需要不同的依賴包,具體如下所示:

  • Nginx:openssl openssl-devel zlib zlib-devel pcre pcre-devel gcc make automake autoconf libtool gcc-c++

  • Tomcat:主要依賴于jdk環境

  • Redis:tcl gcc make

  • Mysql:無

  • Linux下root賬號安裝:

    yum install libaio openssl openssl-devel tcl ssl * gcc* lua zlib zlib-devel pcre pcre-devel-y

3.  系統架構要求

每個環節必須要求存在高可用,nginx+keepalived實現高可用,mysql+keepalived實現高可用,redis哨兵或集群架構實現高可用。

4.  硬件要求

  • 網絡1000Mbps及以上

  • 內存和cpu針對不同的軟件建議不同的大小,如下

  • Nginx:4G2C

  • Tomcat:8G4C+

  • Redis:內存建議8G及以上,CPU4個以上

  • Mysql:內存建議8G及以上,CPU4個以上

5.  關閉selinux


修改selinux配置文件:SELINUX=disabled


6.  關閉防火墻

  • 關閉防火墻

    systemctl stop firewalld.service 或service iptables stop

  • 禁用防火墻

    systemctl disable firewalld.service 或 chkconfig iptables off


三、keepalived安裝部署


1.  Keepalived編譯

  • 安裝依賴包:

    yum install gcc* openssl* ssl* -y

  • 解壓keepalived安裝包并進去加壓目錄:

    ./configure --prefix=/data/keepalived/

  • 創建軟連接:

    ln-s/data/keepalived/etc/keepalived/

    keepalived.conf /etc/keepalived/keepalived.conf

2.  檢查腳本編寫


cat /data/keepalived/sbin/check.sh

#!/bin/bash

ps=`ss -anl|grep LISTEN|grep -w 8080|wc -l`

if [$ps -ne 1]; then

pkill keepalived

fi


注:check.sh的權限必須是700才能調用執行:

chmod 700 /data/keepalived/sbin/check.sh

3.  keepalived配置


cat /data/keepalived/etc/keepalived/keepalived.conf

! Configuration File for keepalived

vrrp_script chk_local {

script "/data/keepalived/sbin/check.sh"

interval 3

weight -2

}


vrrp_instance VI_1 {

    state BACKUP #slave: state BACKUP

    interface eth0

    virtual_router_id 51

    priority 100 #slave: priority 90

nopreempt #不搶占

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.66

    }

track_script {

chk_local

}

}


4.  啟動


/data/keepalived/sbin/keepalived -f 
/data/keepalived/etc/keepalived/keepalived.conf -S 0


注:nginx和mysql的keepalived高可用安裝配置一樣,只是把監聽nginx的端口換成監聽mysql的端口即可。


四、nginx安裝部署

1.  安裝準備:

  • 確認 /data 目錄其他用戶有寫權限

  • 檢查依賴包:pcre pcre-devel zlib zlib-devel openssl openssl-devel

  • 確認安裝包:nginx-1.12.0.tar.gz

  • 準備兩臺主機,兩臺主機安裝方式一模一樣

  • 解壓 tar -zxvf nginx-1.12.0.tar.gz -C /data

2.  編譯安裝:

  • 配置執行以下命令

cd /data/nginx-1.12.0

./configure --prefix=/data/nginx

--with-http_realip_module

--with-http_sub_module

--with-http_flv_module

--with-http_dav_module

--with-http_gzip_static_module

--with-http_stub_status_module

--with-http_addition_module

--with-http_ssl_module


  • 編譯

    make

  • 安裝

    make install

3.  修改nginx配置文件

  • 修改配置文件

vi /data/nginx/conf/nginx.conf


a.添加如下代碼


location /nginx_status {

stub_status on; #開啟stub_status監控模塊

access_log off; #訪問日志不記錄到log中

allow 127.0.0.1; #只允許本機訪問

deny all; # 不允許其他ip地址訪問

}

b.到 server 所在代碼段:


include /data/nginx/conf/conf.d/*.conf


c.在http模塊中填下如下代碼:


server_tokens off; #屏蔽nginx的版本號


  • 修改nginx端口

    由于非root用戶只能使用大于1024的的端口,

    修改 port :80 為 port :7280

4.  啟動nginx

  • 執行命令:

/data/nginx/sbin/nginx -c /data/nginx/conf/nginx.conf


  • 查看啟動進程 ps -ef| grep nginx

5.  測試啟動情況

  • 訪問 http://localhost:7280

  • 訪問 http://localhost:7280/nginx_status

6.  反向代理配置

  • 在http模塊中填下如下代碼:

upstream webserver {

server tomcat1_ip:port;

server tomcat2_ip:port;

server tomcat3_ip:port;

server tomcat4_ip:port;

}


注:該配置為nginx進來的請求輪詢依次分發到后端各web服務,upstream后端的webserver名字在server模塊中localtion代碼段里面添加如下內容:

proxy_pass http://webserver。


五、tomcat安裝部署


1.  jdk、tomcat解壓


tar -zxvf jdk-8u144-linux-x64.tar.gz

mv /data/jdk1.8.0_144 /data/jdk

tar -zxvf apache-tomcat-8.5.71.tar.gz

mv /data/apache-tomcat-8.5.71 /data/tomcat


2.  java環境變量添加


vim .bash_profile

JAVA_HOME=/data/jdk

JAVA_BIN=/data/jdk/bin

PATH=$PATH:$JAVA_BIN

CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME JAVA_BIN PATH CLASSPATH

source .bash_profile

java -version


3.  tomcat配置修改


vi /data/tomcat/conf/server.xml

<Connector port="8080"

protocol="org.apache.coyote.http11.Http11NioProtocol"

maxThreads="400" minSpareThreads="200" maxSpareThreads="500"

connectionTimeout="200000" maxHttpHeaderSize="102400" maxPostSize="-1"

redirectPort="8443" URIEncoding="UTF-8" />


<Host name="localhost" appBase="/data/tomcat/webapps"

unpackWARs="true" autoDeploy="true" />


<Valve className="org.apache.catalina.valves.AccessLogValve"

directory="logs"  prefix="localhost_access_log." suffix=".txt"

pattern="%h|%{X-FORWARDED-FOR}i|%l|%u|%t|%r|%s|%T|%b|%{Referer}i|%{User-Agent}i" />


4.  JVM配置


vi catalina.sh

JAVA_OPTS="-server -Xmx4g -Xms4g -Xmn256m -
XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -Duser.timezone=GMT+8 -verbose:gc -Xloggc:$CATALINA_BASE/logs/gc.log -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCDetails"



六、redis集群安裝部署


1.  安裝準備

  • 確認 /data 目錄其他用戶有寫權限,確認依賴包gcc/tcl/make

  • 安裝包:redis-5.0.13.tar.gz

  • 主備三臺主機,三臺主機單節點安裝啟動方式一模一樣

  • 解壓:tar -xvf redis-5.0.13.tar.gz -C /data

2.  編譯安裝


cd /data/redis-5.0.13

make MALLOC=libc

cd src ; make test

cd ../

make install PREFIX=/data/redis

cd ../redis

mkdir data log conf tmp monitor


3.  修改redis配置文件

每臺主機需要配置兩個配置文件分別為7001端口和7002端口,配置要求如下所示:

cat /data/redis/conf/7001.conf

bind 0.0.0.0

protected-mode yes

port 7001

tcp-backlog 511

timeout 0

tcp-keepalive 60

daemonize yes

supervised no

pidfile /data/redis/tmp/redis7001.pid

loglevel verbose

logfile "/data/redis/log/redis.log"

databases 16

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir /data/redis/data

slave-serve-stale-data yes

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

slave-priority 100

requirepass d^L8sU_s9

masterauth d^L8sU_s9

maxclients 20000

maxmemory 4G

maxmemory-policy volatile-lru

maxmemory-samples 3

appendonly no

appendfilename "appendonly.aof"

appendfsync everysec

aof-rewrite-incremental-fsync yes

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

cluster-replica-validity-factor 0

cluster-require-full-coverage no

hz 100


cat /data/redis/conf/7001.conf配置中只需要把7001改成7002。


4.  啟動redis

三臺主機redis都安裝完成后,把3臺主機6個redis都啟動,啟動命令如下:

/data/redis/bin/redis-server /data/redis/conf/7001.conf

/data/redis/bin/redis-server /data/redis/conf/7002.conf


5.  集群安裝

任意一臺redis主機上執行如下命令:

/data/redis/bin/redis-cli --cluster create ip1:7001 ip1:7002
ip2:7001 ip2:7002 ip3:7001 ip3:7002 --cluster-replicas 1 -a d^L8sU_s9


6.  測試redis集群

  • 檢查集群信息:

    /data/redis/bin/redis-cli -c -h ip1 -p 7001 -a d^L8sU_s9 cluster info

  • 檢查集群節點狀態:

    /data/redis/bin/redis-cli -c -h ip1 -p 7001 -a d^L8sU_s9 cluster ndoes

  • 檢查單節點信息:

    /data/redis/bin/redis-cli -c -h ip1 -p 7001 -a d^L8sU_s9  info


七、mysql雙主安裝部署


1.  安裝準備

  • 確認 /data 目錄其他用戶有寫權限

  • 安裝包:mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz

  • 準備兩臺主機

  • 解壓:tar -xvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz -C /data

2.  初始化安裝

  • 進入安裝目錄并重命名解壓目錄并進入目錄:

    cd /data  &&  mv mysql-5.7.35-linux-glibc2.12-x86_64 mysql && cd /data/mysql

  • 創建數據及日志等目錄:

    mkdir data log

  • 根據配置文件初始化mysql:

./bin/mysqld --defaults-file=/data/mysql/conf/my.cnf --initialize-insecure --user=mysql --innodb_undo_tablespaces=3
  • Mysql配置文件如下:

cat /data/mysql/conf/my.cnf

[client]

port=3306

socket=/tmp/mysql.sock

default-character-set=utf8


[mysql]

no-auto-rehash

default-character-set=utf8


[mysqld]

socket=/tmp/mysql.sock

basedir=/data/mysql

datadir=/data/mysql/data

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

port=3306

character-set-server=utf8

explicit_defaults_for_timestamp=true

lower_case_table_names=1

back_log=200

max_connections=3000

max_connect_errors=100000

table_open_cache=512

external-locking=FALSE

max_allowed_packet=1024M

sort_buffer_size=8M

join_buffer_size=8M

thread_cache_size=51

query_cache_size=32M

#query_cache_limit=4M

transaction_isolation=REPEATABLE-READ

tmp_table_size=96M

max_heap_table_size=96M

skip-name-resolve


###***slowqueryparameters

slow_query_log_file=/data/mysql/log/slow.log

long_query_time=1

slow_query_log = 1


###***binlogparameters

log-bin=/data/mysql/log/mysql-bin

binlog_cache_size=16M

max_binlog_cache_size=128M

max_binlog_size=512M

binlog_format=ROW

expire_logs_days=7


###***MyISAMparameters

key_buffer_size=16M

read_buffer_size=8M

read_rnd_buffer_size=16M

bulk_insert_buffer_size=8M


#***Innodbstorageengineparameters

innodb_buffer_pool_size=4G

innodb_data_file_path=ibdata1:1G:autoextend

innodb_read_io_threads=8

innodb_write_io_threads=8

innodb_thread_concurrency=16

innodb_flush_log_at_trx_commit=1

innodb_log_buffer_size=16M

innodb_log_file_size=512M

innodb_log_files_in_group=4

innodb_max_dirty_pages_pct=75

innodb_buffer_pool_dump_pct=75

innodb_lock_wait_timeout=50

innodb_file_per_table=on

innodb_undo_tablespaces=3

###***master-slave replication parameters

    server-id=1 #主節點為1,slave節點配置為2,這是主從mysql配置中唯一不一樣的地方。

log-slave-updates=true

gtid-mode=on

enforce-gtid-consistency=true

master-info-repository=TABLE

relay-log-info-repository=TABLE

sync-master-info=1

slave-parallel-workers=4

slave-parallel-type=LOGICAL_CLOCK

slave-preserve-commit-order=1

master-verify-checksum=1

slave-sql-verify-checksum=1

binlog-rows-query-log_events=1


[mysqldump]

quick

max_allowed_packet=1024M


[myisamchk]

key_buffer=16M

sort_buffer_size=16M

read_buffer=8M

write_buffer=8M


[mysqld_safe]

open-files-limit=8192

log-error=/data/mysql/log/error.log

pid-file=/data/mysql/log/mysqld.pid


  •  啟動主從mysql:       

/data/mysql/bin/mysqld_safe --defaults-
file=/data/mysql/conf/my.cnf  &


  • 主從初始化及啟動方式一樣。

3.  配置mysql主從

  • 主庫操作:登陸mysql:

/data/mysql/bin/mysql -uroot

mysql>
update mysql.user set authentication_string=password(*) where user=root;

mysql>
flush privileges;

mysql>
grant replication slave on *.* to repl@% identified by ****;

  • 從庫操作:登陸mysql:

/data/mysql/bin/mysql -uroot

mysql>
change master to master_host=主庫ip,master_user=repl,master_port=3306,master_password=Rep
2018#,master_auto_position=1;
mysql>start slave;



4.  配置mysql雙主

  • 從庫操作:

mysql>grant replication slave on *.* to repl@% identified 
by ****;
  • 主庫操作:

mysql>change master to master_host=從庫ip,master_user=repl,master_port=3306,master_password=Rep
2018#,master_auto_position=1;
mysql>
start slave;


5.  測試雙主同步

  • db1操作:

    a. 登陸數據庫

    Create database if not exists dbname;

    b. 查看db2是否已通過過來dbname。

  • db2操作:

    a. 登陸數據庫

    use dbname

    create table tablename (id int(11),name varchar(25) );

    b. 查看db1是否已同步過來tablename。


八、總結

至此一個實現高可用反向代理集群即安裝完成,簡單的架構如上圖所示;

  • nginx主要實現高可用反向代理負載均衡功能;

  • web服務多機主要提高程序的的并發處理能力及避免單點故障;

  • redis做緩存數據庫可以緩存不怎么修改的配置信息或序列計數等信息提高程序的處理效率;

  • mysql主從主要就是存儲數據并保障主從讀寫分離機failover自動切換避免單點故障。




END



更多精彩干貨分享

點擊下方名片關注

IT那活兒

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/129755.html

相關文章

  • 明與暗角力!開源云平臺中的拼圖“玩具”

    摘要:開源云平臺中的拼圖玩具對于云平臺,如今基本就意味著開源。明與暗角力開源云平臺中的拼圖玩具為什么會產生這種混淆正如之前談到由兩大部分組成和的計算引擎。 開源云平臺中的拼圖玩具?對于云平臺,如今基本就意味著開源。提及開源技術,著實在云計算和大數據下火起來。面對撲面而來的云服務,無論是何種服務對于企業和用戶來說都是熟悉的陌生人,熟悉是因為知道云計算的人都能說出IaaS、PaaS和SaaS這幾個詞,...

    1treeS 評論0 收藏0
  • LinuxCon+ContainerCon+CloudOpen首次來華,國際開源盛會不容錯過!

    摘要:月日,國家會議中心,由主辦的合稱將強勢登陸北京這是首次來華,在這場三合一的開源技術盛會中,來自國內外的開發人員架構師系統管理員專家商業領袖等數千名專業人士將匯聚一堂。后被收購,梁勝出任云平臺首席技術官,也成為首位華人。 6月19-20日,國家會議中心,由The Linux Foundation主辦的LinuxCon + ContainerCon + CloudOpen (合稱LC3) ...

    Corwien 評論0 收藏0
  • 斌哥的 Docker 進階指南—監控方案的實現

    摘要:本文轉自劉斌博文如何選擇監控方案,文中劉斌從技術的角度深入解釋了監控的數據采集原理,介紹了現有開源的監控方案,以及能夠對進行監控功能的主流服務工具。下一章,劉斌將為大家介紹監控的開原方案,主流服務,及其特點。 過去的一年中,關于 Docker 的話題從未斷過,而如今,從嘗試 Docker 到最終決定使用 Docker 的轉化率依然在逐步升高,關于 Docker 的討論更是有增無減。另一...

    X_AirDu 評論0 收藏0
  • 云計算開源下半場:運營商成主力 獨享兩大優勢

    摘要:而隨著云計算成為轉型的重要技術支撐,云計算開源也進入了下半場。房秉毅表示,在這個轉型過程中,云計算顯然為運營商的轉型和新業務發展提供了極大的機會。但在房秉毅看來,從傳統向轉型的時候,尤其在云計算方面,運營商擁有兩大獨特優勢。近年來,在云計算領域,開源技術呈現爆發式的增長,像OpenStack、KVM等已經成為云計算領域非常主流的開源應用。借用云計算領域的主流看法,這個過程就是云計算開源戰場的...

    niceforbear 評論0 收藏0
  • 一個程序員的正版清單

    摘要:有部分前端人員使用的是盜版的。非編程相關其它一些我使用的,但與編程關系不大的正版工具。尊重別人,更是尊重自己做為一個程序員,使用正版,我認為這不是自做清高的事情,這是對自己職業的一種基本尊重。 ...

    wudengzan 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<