精华内容
下载资源
问答
  • 在k8s集群部署Java项目
    2020-11-19 09:28:15

    一、容器交付流程

    开发代码 - 持续交付/集成 - 应用部署 - 运维

    二、k8s部署Java项目流程

    制作镜像 - 推送到镜像仓库 - 控制器部署镜像 - 对外暴露应用 - 运维

    1、准备java项目,把java进行打包(jar包或者war包)

    (1)需要使用两个依赖环境

    • java环境 - jdk
    • maven环境

    (2)把java项目(springboot)打成war包

    重要事情 :编写dockerfile

    //dockerfile
    
    FROM openjdk:8-jdk-alpine
    VOLUME /tmp
    ADD ./target/demojenkins.jar demojenkins.jar
    ENTRYPOINT ["java","-jar","/demojenkins.jar", "&"]
    
    # 通过maven打包
    //在项目中打开cmd.exe
    
    mvn clean package
    
    //打包完成会在项目下边生成一个jar包
    

    2、制作镜像

    # 制作镜像
    docker build -t Java-demo-01:latest .
    
    # 查看镜像
    docker image
    
    # 测试:本地启动制作好的镜像是否可以正常访问
    //启动镜像
    docker run -d -p 8111:8111 Java-demo-01:latest -t
    
    //查看8118端口占用的进程
    netstat -tunlp | grep 8111
    
    //查看进程
    ps -ef | grep demo
    
    //通过浏览器访问
    
    

    3、上传镜像到镜像服务器(阿里云)

    阿里云 - 容器镜像服务控制台 - 申请 - 创建命名空间 - 创建镜像仓库 - 使用推送命令推送

    # 登录镜像服务器
    
    # 为镜像添加版本号
    
    # 推送镜像到服务器
    
    

    4、部署镜像,对外暴露应用

    # 创建deployment类型的pod的yaml文件
    kubectl create deployment javademo1 --image=Java项目镜像地址(在阿里云服务器找):镜像版本 --dry-run -o yaml > javademo1.yaml
    
    # 执行yaml文件
    kubectl apply -f javademo1.yaml
    
    # 查看创建成功的pod
    kubectl get pods -o wide
    
    # 扩容副本
    kubectl scale deployment Javademo1 --replicas=3
    
    # 对外暴露端口(两种方式:service、ingress)
    //service方式
    kubectl expose deployment javademo1 --port=8111 --target-port=8111 --type=NodePort
    
    # 查看对外暴露的应用
    kubectl get svc
    
    更多相关内容
  • Javeweb项目微服务集群部署

    千次阅读 2021-11-06 22:00:44
    ** 基于Springcloud的javaweb项目部署集群环境,采用jdk运行(jar包),consul 进行注册服务监控健康,实现并发量大的时候可以快速响应的高并发效果** 操作过程如下 1.安装nfs服务 2.安装相应中间件服务 3.安装...

    ** 基于Springcloud的javaweb项目部署集群环境,采用jdk运行(jar包),consul 进行注册服务监控健康,实现并发量大的时候可以快速响应的高并发效果**
    操作过程如下
    1.安装nfs服务
    2.安装相应中间件服务
    3.安装数据库以及缓存数据库
    4.配置文件
    5.运行文件调试
    (监控健康服务节点consul /请求反向代理nginx/)

    1.安装Net file system 共享文件服务(nfs)

    离线安装(内网/脱网/局域网)/外网直接yum install nfs rpcbind即可~操作如下

    NFS 服务需要依赖 RPC 服务,所以这里 NFS 服务端需要安装 rpcbind 和 nfs-utils,客户端只需要安装 nfs-utils。
    1.首先确认服务端系统是否已安装nfs

    rpm -qa nfs-utils rpcbind
    

    2.安装服务
    如果计算机可以连接到互联网,则可以通过以下命令进行安装:

    #服务端
    yum install -y nfs-utils rpcbind
    #客户端
    yum install -y nfs-utils
    

    但是,很多时候由于安全的原因不能联网,所以只能离线安装。
    下载离线安装包,
    rpcbind:

    libtirpc-0.2.4-0.15.el7.x86_64.rpm
    rpcbind-0.2.0-47.el7.x86_64.rpm
    

    nfs-utils:

    nfs-utils-1.3.0-0.61.el7.x86_64
    tcp_wrappers-7.6-77.el7.x86_64
    ...
    #这个依赖有点多,需要的可以联系我,就不一一列出来了
    百度网盘下载地址:https://pan.baidu.com/s/1mq7ZnWyn33krFcE3AnBQPQ 
    提取码:cfq2 
    

    安装离线包:

    #安装路径下的所有rpm包
    rpm -Uvh *.rpm --nodeps --force
    #安装特定的rpm包
    rpm -hvi dejagnu-1.4.2-10.noarch.rpm
    

    最后,检查是否安装成功。
    配置:
    1.在服务端创建一个共享目录 /data/share ,作为客户端挂载的远端入口,然后设置权限。

    mkdir -p /data/share
    chmod 755 /data/share
    

    2.修改 NFS 配置文件 /etc/exports

    vim /etc/exports
    #配置单个ip
    /data/share 192.168.0.130(rw,sync,insecure,no_subtree_check,no_root_squash)
    /data/share 192.168.0.131(rw,sync,insecure,no_subtree_check,no_root_squash)
    #配置ip段
    /data/share 192.168.0.130/139(rw,sync,insecure,no_subtree_check,no_root_squash)
    #配置所有ip可以挂载
    /data/share *(rw,sync,insecure,no_subtree_check,no_root_squash)
    

    说明:
    /data/share-共享目录
    192.168.0.130-IP地址,可以是特定的ip地址、ip地址段或所有可以访问的ip
    rw,sync,insecure,no_subtree_check,no_root_squash-访问控制参数,具体参考下面列表。

    参数说明
    ro只读
    rw读写
    sync同步共享-所有数据在请求时写入共享
    async异步共享-nfs 在写入数据前可以响应请求
    securenfs 通过 1024 以下的安全 TCP/IP 端口发送
    insecurenfs 通过 1024 以上的端口发送
    wdelay如果多个用户要写入 nfs 目录,则归组写入(默认)
    no_wdelay如果多个用户要写入 nfs 目录,则立即写入,当使用 async 时,无需此设置
    hide在 nfs 共享目录中不共享其子目录
    no_hide共享 nfs 目录的子目录
    subtree_check如果共享 /usr/bin 之类的子目录时,强制 nfs 检查父目录的权限(默认)
    no_subtree_check不检查父目录权限
    all_squash共享文件的 UID 和 GID 映射匿名用户 anonymous,适合公用目录
    no_all_squash保留共享文件的 UID 和 GID(默认)
    root_squashroot 用户的所有请求映射成如 anonymous 用户一样的权限(默认)
    no_root_squashroot 用户具有根目录的完全管理访问权限
    anonuid=xxx指定 nfs 服务器 /etc/passwd 文件中匿名用户的 UID
    anongid=xxx指定 nfs 服务器 /etc/passwd 文件中匿名用户的 GID

    启动服务并测试

    1.启动rpc服务

    service rpcbind start
    #或者使用如下命令
    /bin/systemctl start rpcbind.service
    
    # 查看 NFS 服务项 rpc 服务器注册的端口列表
    rpcinfo -p localhost 
    

    2.启动nfs服务

    service nfs start
    #或者使用如下命令亦可
    /bin/systemctl start nfs.service
    # 启动 NFS 服务后 rpc 服务已经启用了对 NFS 的端口映射列表
    # rpcinfo -p localhost
    

    3.在另一台 Linux 上挂载目录

    #查看配置
    showmoun -e 192.168.xxx.xxx
    #新建目录
    mkdir -p /share
    #挂载共享目录(挂载远端目录到本地 /share 目录)
    mount 192.168.0.130:/data/share  /share
    #查看挂载目录状况
     df -h | grep 10.222.77.86
    #如果要卸载目录
    umount  /share
    

    2.安装注册服务consul

    简介:Consul是一个分布式高可用的系统,一个发现和配置服务的工具。客户端可以利用它提供的API注册和发现服务,及监控检测功能实现服务的高可用。
    下载

    wget https://releases.hashicorp.com/consul/1.5.2/consul_1.5.2_linux_amd64.zip
    

    离线环境下则直接拉包进来即可~

    解压

    
     -方法1
    unzip consul_1.5.2_linux_amd64.zip  -d /usr/bin   ##解压到usr/bin目录下
    unzip consul_1.5.2_linux_amd64.zip                      ##解压到当前目录下
     -方法2
     unzip consul_1.5.2_linux_amd64.zip   ##解压
    
    cp consul /usr/local/bin/                       ##移动
    
    验证
    consul
    

    启动开发模式(快速启动一个单节点Consul,但是不能数据持久化,不能用于生产环境)

    consul agent -dev
    

    consul server端的启动命令:

    consul agent -server -bootstrap-expect 1  -client 0.0.0.0 -config-dir /etc/consul.d
    或者 这样可以输出日志
    nohup consul agent -server -bootstrap-expect 1 -client 0.0.0.0 -config-dir /etc/basic.json >consul.log &
    

    -config-dir :就是指定加载置文件的目录,我们只需要填写配置文件的目录就可以帮助我们把该目录下所有的以.json结尾配置文件加载进去,它的加载顺序是根据26个字母的顺序加进行加载配置文件的。文件内容都是json格式的数据。默认后面文件定义配置会覆盖前面文件定义的配置。

    {
       "ports": {  
           "http": 8501 ,
           "dns": 8601,
           "grpc": 8401,
           "serf_lan": 8311,
           "serf_wan": 8312, 
           "server": 8310
         }
    

    启动consul server端后,会发现我们的端口全部变成上面描述的端口,consul web UI的端口不在是默认的8500 而变成了 8501 ,另外当我们启动其他consul时,通过-retry-join 加入server端时会报错,拒绝连接,原因就是因为server端的端口发生了改动,它默认去连接8301端口,此时-retry-join不能直接写ip地址,需要写对应的修改后的serf_lan端口 例如:

    consul agent   -data-dir /consul/data2  -advertise 127.0.0.1 -client 0.0.0.0 -join 127.0.0.1:8311
    

    consul描述
    查看集群成员

    consul members
    

    consul集群
    ps:

    查看最近历史日志
    consul monitor
    停止
    gracefully或者forcefully
    

    插入节点注册服务写一个json数据:

    {
        "service":{
            "name":"test01",
            "tags":[
                "",
                ""
            ],
            "address":"127.0.0.1",
            "port":3010,
            "enable_tag_override": false,
            "check":{
                "deregisterCriticalServiceAfter":"90m",
                "http":"http://127.0.0.1:3010/health",
                "interval":"10s"
            }
        }
    }
    名词解释:
    tags:服务的tag,自定义,可以根据这个tag来区分同一个服务名的服务
    address:服务注册到consul的IP,服务发现,发现的就是这个IP
    port:服务注册consul的PORT,发现的就是这个PORT
    enable_tag_override:标签是否允许覆盖
    http:指定健康检查的URL,调用后只要返回20X,consul都认为是健康的
    interval:健康检查间隔时间,每隔10s,调用一次健康检查的URL
    

    重启Agent

    consul agent -dev -config-dir /etc/consul.d/
    

    3.安装Nginx

    1.首先下载Nginx前需要一些插件~
    可以查看gcc版本,若无,则就基本无了

    gcc -v
    

    安装gcc,pcre、pcre-devel,zlib,zlib-devel,openssl,openssl-devel操作可以直接百度~

    • gcc是linux下的编译器在此不多做解释,感兴趣的小伙伴可以去查一下相关资料,它可以编译 C,C++,Ada,Object C和Java等语言.
    • pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库。
    • zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip,
    • openssl是web安全通信的基石,没有openssl,可以说我们的信息都是在裸奔

    正式安装nginx
    1、下载nginx安装包

    wget http://nginx.org/download/nginx-1.9.9.tar.gz  
    

    2、把压缩包解压 usr/local/java

    tar -zxvf  nginx-1.9.9.tar.gz
    

    3、切换到cd /usr/local/java/nginx-1.9.9/下面
    执行三个命令:

    初始化默认配置
    ./configure
     编译
    make
    安装
    make install
    

    4、切换到/usr/local/nginx安装目录,nginx的配置文件nginx.conf文件,主要也就是端口
    5、启动nginx服务 切换目录到/usr/local/nginx/sbin下面

    ./nginx
    

    查看nginx服务是否启动成功

    ps -ef | grep nginx
    

    4.安装MySQL数据库下载工具

    下载工具wget:网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理。

    yum -y install wget
    

    下载mysql源安装包

    wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
    

    安装mysql源

    yum localinstall mysql57-community-release-el7-8.noarch.rpm
    

    以上两步都是必须的,以下就是检测源是否安装成功

    yum repolist enabled | grep "mysql.*-community.*"
    

    安装mysql服务,此处看网速有快有慢(可以用阿里源,百度下)

    yum install mysql-community-server
    

    安装后,启动mysql服务

    systemctl start mysqld
    

    查看mysqld服务,此处要是查看到activity状态是running那就表明已经

    systemctl status mysqld
    

    安装成功了,设置开机启动

    systemctl enable mysqld
    

    重载服务

    systemctl daemon-reload
    

    mysql5.7安装时会产生一个默认的密码,查看此密码的文件一般存在于/var/log/mysqld.log上 查看初始密码

    grep 'temporary password' /var/log/mysqld.log
    

    设置参数

    修改/etc/my.cnf,[mysqld]下面加入
    取消密码复杂度

    plugin-load=validate_password.so 
    validate-password=OFF
    

    设置表大小写不敏感

    设置默认端口为3307

    port=3307
    

    保存退出后,重启服务, 修改密码。

    systemctl restart mysqld
    

    设置密码和远程连接
    修改密码

    grep "password" /var/log/mysqld.log  ## 查看自动生成的密码
    mysql -uroot -p 
    

    输入root初始密码登录-- 密码设为123456

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
    设置密码为"123456"(为初始化方便,生产环境可以设置密码)
    mysql> use mysql; 
    mysql> GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
    mysql> GRANT ALL ON *.* TO root@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;
    mysql>FLUSH PRIVILEGES;
    mysql>quit;
    

    5.安装Redis Nosql类型数据库(缓存数据库)

    安装工具以及redis

    yum install epel-release
    yum install redis
    systemctl start redis && systemctl enable redis
    

    配置外网可访问

    vi /etc/redis.conf
    

    找到

    bind 127.0.0.1
    protected-mode yes
    

    改为

    bind 0.0.0.0
    protected-mode no
    

    重启服务生效

    systemctl restart redis
    

    ############# ** 以下操作为部署Myapps平台系统的操作 ,微服务框架部署完毕 ** #############

    6.部署Myapps

    6.1导入相应JAR包(runtime,signon,designer主要jar包)

    6.2编写启动文件,启动后查看jar包是否启动并且注册到consul节点

    cat > /data/myapps/run-gateway-service.sh <<EOF
    nohup java -server -jar -Xms256M -Xmx512M obpm-gateway-consul-5.x.nightbuild.jar  --spring.cloud.consul.host=192.168.0.26 >/data/myapps/logs/gateway.log 2>&1 &
    EOF
    chmod +x /data/myapps/run-gateway-service.sh
    
    cat > /data/myapps/run-runtime-service.sh <<EOF
    nohup java -server -jar  -Xms512M -Xmx2048M obpm-runtime-consul-5.x.nightbuild.jar --myapps.storage.root=/data/myapps/storage --spring.cloud.consul.host=192.168.0.26 --spring.datasource.url="jdbc:mysql://192.168.0.27:3306/obpm2?characterEncoding=UTF-8&serverTimezone=GMT" --spring.datasource.username=root --spring.datasource.password=123456 --spring.redis.host=192.168.0.27 >/data/myapps/logs/runtime.log  2>&1 &
    EOF
    chmod +x /data/myapps/run-runtime-service.sh
    
    cat > /myapps/run-signon-service.sh <<EOF
    nohup java -server -jar -Xms256M -Xmx512M obpm-signon-consul-5.x.nightbuild.jar --myapps.storage.root=/myapps/storage --spring.cloud.consul.host=192.168.89.10:10500 --spring.datasource.url="jdbc:mysql://192.168.88.141:3307/obpm5?characterEncoding=UTF-8&serverTimezone=GMT" --spring.datasource.username=root --spring.datasource.password=123456 --spring.redis.host=192.168.89.10 >/myapps/logs/signon.log  2>&1 &
    EOF
    chmod +x /myapps/run-signon-service.sh
    
    cat > /myapps/run-message-service.sh <<EOF
    nohup java -server -jar -Xms256M -Xmx512M obpm-message-consul-5.x.nightbuild.jar --myapps.storage.root=/myapps/storage --spring.cloud.consul.host=192.168.89.10:10500 --spring.datasource.url="jdbc:mysql://192.168.89.141:3307/message5?characterEncoding=UTF-8&serverTimezone=GMT" --spring.datasource.username=root --spring.datasource.password=123456 --spring.redis.host=192.168.89.10 >/myapps/logs/message.log  2>&1 &
    EOF
    chmod +x /myapps/run-message-service.sh
    
    cat > /myapps/run-designer-service.sh <<EOF
    nohup java -server -jar -Xms512M -Xmx2048M obpm-designer-consul-5.x.nightbuild.jar --myapps.storage.root=/myapps/storage --spring.cloud.consul.host=192.168.89.10:10500 >/myapps/logs/designer.log 2>&1 &
    EOF
    cmod +x /myapps/run-designer-service.sh
    

    6.3查看jar包是否启动并且注册到consul节点

    去到consul ui里面就行查看即可~若有出现节点 则证明服务启动成功
    若无则需要检查consul地址是否配置错误

    6.4导入静态资源文件以及nfs服务共享文件进行存放软件

    ps!!!:微服务采用前后端分离 静态资源文件存放于nginx进行http代理即可
    共享文件则需要存放到开启NFS共享服务的相应文件夹目录下(obpm-demo)

    6.5配置NGINX静态资源地址以及服务器地址进行负载均衡

    #user  nobody;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    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  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    
       upstream runtime {
    server 192.168.89.12:8083;
    server 192.168.89.11:8083;
    }
    
    upstream signon {
    server 192.168.89.12:8010;
    server 192.168.89.11:8010;
    }
    upstream designer {
    server 192.168.89.12:8082;
    server 192.168.89.11:8082;
    }
    
    
    upstream message {
    server 192.168.89.12:8084;
    server 192.168.89.11:8084;
    }
    
     server {
            listen       80;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                root   html;
                index  index.html index.htm;
            }
             ### 静态资源
            location /static {
                   alias /myapps/static;
                   index index.html;
                   }
    location /designer {
                            proxy_pass http://designer/designer;
                            add_header 'Access-Control-Allow-Origin' '*';
                            add_header 'Access-Control-Allow-Methods' 'GET,POST,DELETE,PUT';
                            add_header 'Access-Control-Allow-Header' 'Content-Type,*';
                    }
    location /signon {
                            proxy_pass http://signon/signon;
                            add_header 'Access-Control-Allow-Origin' '*';
                            add_header 'Access-Control-Allow-Methods' 'GET,POST,DELETE,PUT';
                            add_header 'Access-Control-Allow-Header' 'Content-Type,*';
                    }
    location /obpm {
    						proxy_pass http://runtime/obpm;
                            add_header 'Access-Control-Allow-Origin' '*';
                            add_header 'Access-Control-Allow-Methods' 'GET,POST,DELETE,PUT';
                            add_header 'Access-Control-Allow-Header' 'Content-Type,*';
                    
    }
    location /message {
                            proxy_pass http://message/message;
                            add_header 'Access-Control-Allow-Origin' '*';
                            add_header 'Access-Control-Allow-Methods' 'GET,POST,DELETE,PUT';
                            add_header 'Access-Control-Allow-Header' 'Content-Type,*';
                    } 
    
    	
    	
    	
    	
    	
    }
    
    
        # another virtual host using mix of IP-, name-, and port-based configuration
        #
        #server {
        #    listen       8000;
        #    listen       somename:8080;
        #    server_name  somename  alias  another.alias;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    
        # HTTPS server
        #
        #server {
        #    listen       443 ssl;
        #    server_name  localhost;
    
        #    ssl_certificate      cert.pem;
        #    ssl_certificate_key  cert.key;
    
        #    ssl_session_cache    shared:SSL:1m;
        #    ssl_session_timeout  5m;
    
        #    ssl_ciphers  HIGH:!aNULL:!MD5;
        #    ssl_prefer_server_ciphers  on;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    }
    
    展开全文
  • 集群项目搭建

    千次阅读 2021-02-26 09:25:31
    ## 集群项目搭建需要配置到项目中的信息已经在[集群基础设施准备](http://www.javamall.com.cn/docs/current/deploy/ji-qun-bu-shu/ji-qun-xiang-mu-da-jian.html)中配置完毕,下面将进行合并到项目中搭建集群项目:...

    ## 集群项目搭建

    需要配置到项目中的信息已经在[集群基础设施准备](http://www.javamall.com.cn/docs/current/deploy/ji-qun-bu-shu/ji-qun-xiang-mu-da-jian.html)中配置完毕,下面将进行合并到项目中搭建集群项目:

    #### 一、配置redis、rabbitmq、mysql信息:

    1、javashop-web工程配置文件2个:

    ~~~

    /javashop-web/src/main/webapp/config/redis.properties

    ~~~

    ![](http://www.javamall.com.cn/docs/current/deploy/assets/jqxmdj1.png)

    ~~~

    /javashop-web/src/main/webapp/config/amqp.properties

    ~~~

    ![](http://www.javamall.com.cn/docs/current/deploy/assets/xmdj2.png)

    2、javashop-consumer工程配置文件1个:

    ~~~

    /javashop-consumer/src/main/resources/application.properties

    ~~~

    ![](http://www.javamall.com.cn/docs/current/deploy/assets/xmdj4.png)

    #### 二、配置elasticsearch信息:

    1.将javashop-cluster中elasticsearch.properties文件中的名字和节点值更换。如图:

    注意:要与部署的elasticsearch的信息保持一致

    ![](http://www.javamall.com.cn/docs/current/deploy/assets/xmdj5.png)

    2.在javashop-consumer的application.properties中增加

    ~~~

    spring.data.elasticsearch.cluster-name=es-5.6

    spring.data.elasticsearch.cluster-nodes=localhost:9300

    ~~~

    如下图:

    ![](http://www.javamall.com.cn/docs/current/deploy/assets/xmdj8.png)

    ### 三、配置xxl-job信息

    请参考[[xxl-job安装](http://www.javamall.com.cn/docs/current/deploy/ji-chu-huan-jing-da-jian/xxl-joban-zhuang.html)],这一步在搭建基础环境的时候已经配置好了。

    ### 四、修改pom文件依赖关系

    1. Javashop-web将

    ~~~

    com.enation.app.javashop

    shop-core

    6.4.0

    ~~~

    修改为

    ~~~

    com.enation.app.javashop

    javashop-cluster

    6.4.0

    ~~~

    2.Javashop-consumer需要将

    ~~~

    com.enation.app.javashop

    shop-core

    6.4.0

    ~~~

    修改为

    ~~~

    com.enation.app.javashop

    javashop-elasticsearch

    6.4.0

    ~~~

    ~~~

    注意:一定要替换为javashop-elasticsearch这个依赖,这个依赖会通过依赖传递将shop-core依赖过来,否则会报es版本错误

    ~~~

    #### 五、配置session共享

    修改web.xml文件:

    /javashop-web/src/main/webapp/WEB-INF/web.xml

    加入代码:

    ![](http://www.javamall.com.cn/docs/current/deploy/assets/xmdj9.png)

    ~~~

    springSessionRepositoryFilter

    org.springframework.web.filter.DelegatingFilterProxy

    springSessionRepositoryFilter

    /*

    ~~~

    展开全文
  • java负载均衡+高可用

    Linux部署Java集群项目,实现负载均衡+高可用模式。

    0、环境

    系统:centos7
    Jdk:1.8
    Tomcat:8
    Ngxin+Keepalived
    

    1、防火墙设置

    关闭防火墙或者放行端口

    1.1关闭防火墙

    #停止firewall
    systemctl stop firewalld.service

    #禁止firewall开机启动
    systemctl disable firewalld.service

    #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
    firewall-cmd --state

    1.2加入放行端口

    #添加放行端口(–permanent永久生效,没有此参数重启后失效)
    firewall-cmd --zone=public --add-port=80/tcp --permanent
    firewall-cmd --zone=public --add-port=8080/tcp --permanent

    #刷新防火墙 使其生效
    firewall-cmd --reload

    #查看开发的端口
    firewall-cmd --zone=public --list-ports

    2、安装JDK

    #查看java列表
    yum -y list java*

    #安装1.8.0 openjdk(或者官网下载jdk)
    yum -y install java-1.8.0-openjdk

    #JDK默认安装路径/usr/lib/jvm
    ls /usr/lib/jvm
    在这里插入图片描述
    #环境变量配置
    vi /etc/profile

    #将如下配置添加至文件中,然后保存退出。

    # set java environment  
    JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64
    PATH=$PATH:$JAVA_HOME/bin  
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  
    export JAVA_HOME  CLASSPATH  PATH 
    

    #保存关闭profile文件,执行如下命令生效
    source /etc/profile

    #使用如下命令,查看JDK变量
    echo $JAVA_HOME
    echo $PATH
    echo $CLASSPATH
    在这里插入图片描述

    3、装tomcat8

    3.1 安装wget

    yum -y install wget

    3.2下载tomcat8

    cd /usr/local
    wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.47/bin/apache-tomcat-8.5.47.tar.gz
    #解压
    tar -zxvf apache-tomcat-8.5.47.tar.gz

    #移动重命名
    mv apache-tomcat-8.5.47 /usr/local/tomcat

    3.3配置jdk到tomcat

    #修改配置文件
    vi /usr/local/tomcat/bin/catalina.sh

    #在 OS specific support. 前面加入如下代码
    JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64
    JRE_HOME=$JAVA_HOME/jre

    3.4配置tomcat开机启动

    #创建tomcat.service文件
    vi /usr/lib/systemd/system/tomcat.service

    [Unit]
    Description=Tomcat
    After=syslog.target network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=oneshot
    ExecStart=/usr/local/tomcat/bin/startup.sh
    ExecStop=/usr/local/tomcat/bin/shutdown.sh
    ExecReload=/bin/kill -s HUP $MAINPID
    RemainAfterExit=yes
    
    [Install]
    WantedBy=multi-user.target
    

    #允许tomcat开机启动
    systemctl enable tomcat

    3.5 tomcat常见命令

    #启动tomcat
    systemctl start tomcat.service

    #关闭tomcat
    systemctl stop tomcat.service

    #重启tomcat
    systemctl restart tomcat.service

    #查看状态tomcat
    systemctl status tomcat.service

    4、nginx负载均衡

    备注:nginx 负载均衡参数ip_hash:实现同一ip地址下访问项目为同一个服务器,实现session共享机制,缺点:当服务器挂了,已在访问该服务器的用户请求会失效,需要重新访问项目。

    4.1 分别在3台服务器上安装nginx

    yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

    cd /usr/local/

    wget https://nginx.org/download/nginx-1.13.4.tar.gz

    tar -zxvf nginx-1.13.4.tar.gz

    cd nginx-1.13.4

    ./configure --prefix=/etc/nginx
    make
    make install

    #创建日志目录
    mkdir -p /home/bdxhdata/nginx/logs

    #修改配置
    whereis nginx
    cd /etc/nginx/conf

    > nginx.conf
    vi nginx.conf
    

    nginx.conf:(配置信息)

    worker_processes  1;
    error_log  /home/bdxhdata/nginx/logs/nginx-error.log;
    
    events {
        worker_connections  1024;
    }
    
    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  /home/bdxhdata/nginx/logs/nginx-access.log  main;
        sendfile        on;
        keepalive_timeout  65;
    
    upstream bdxh{  
    ip_hash;
    	server 192.168.100.11:8080;
    	server 192.168.100.12:8080;
       	server 192.168.100.13:8080;
        }
       server {  
    	listen       80;  
    	server_name  localhost;  
    	#charset koi8-r;  
    	#access_log  logs/host.access.log  main;  
    	location /rsv {  
    	    proxy_pass   http://bdxh;  
    	    index  index.html index.htm;  
    	}
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
    	location = /favicon.ico {
    	    log_not_found off;
    	    access_log off;
    	}
        }
    }
    

    #启动nginx
    /etc/nginx/sbin/nginx

    #重启nginx
    /etc/nginx/sbin/nginx -s stop
    /etc/nginx/sbin/nginx

    #查看ip占用
    yum -y install net-tools
    netstat -tunlp

    5、安装keepalived实现高可用

    5.1 下载与配置

    yum -y install keepalived
    
    > /etc/keepalived/keepalived.conf
    vi /etc/keepalived/keepalived.conf
    
    

    #keepalived.conf 配置:(主服务器配置:state MASTER)

    ! Configuration File for keepalived
    global_defs {
    	router_id jackfang
    }
    
    vrrp_script check_nginx {
        script "/etc/keepalived/nginx_check.sh"         
        interval 2                            
        weight 2                  
    }
    vrrp_instance VI_1 {
        state MASTER
        interface ens33
        virtual_router_id 100
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        track_script {
            check_nginx
        }
        virtual_ipaddress {
            192.168.100.10
        }
    }
    

    #keepalived.conf 配置:(备服务器配置)
    state MASTER 改为state BACKUP
    priority 100 改小 priority 99

    5.2 创建检测nginx脚本

    vi /etc/keepalived/nginx_check.sh

    #!/bin/bash
    A=`netstat -tunlp|grep 80|wc -l`
    if [ $A -eq 0 ];then
    /etc/nginx/sbin/nginx
    sleep 2
    if [ `netstat -tunlp|grep 80|wc -l` -eq 0 ];then
            killall keepalived
    fi
    fi
    

    chmod +x /etc/keepalived/nginx_check.sh

    service keepalived start
    service keepalived restart
    service keepalived stop
    #查看keepalived运行状态
    service keepalived status
    在这里插入图片描述
    mkdir -p /etc/sysconfig/

    cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
    cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
    ln -s /usr/local/sbin/keepalived /usr/sbin/
    ln -s /usr/local/keepalived/sbin/keepalived /sbin/

    #启动keepalived
    /usr/local/keepalived/sbin/keepalived

    6、部署RSV(JavaWeb项目)项目到tomcat

    6.1 将打包好的项目移动到webapps文件夹下

    在这里插入图片描述

    #重启tomcat服务
    service tomcat restart

    6.2 测试访问rsv项目

    在这里插入图片描述

    #测试当停止11、12 其中一台服务器时,仍然能访问成功表示实现了高可用配置。

    展开全文
  • 项目部署必备工具

    2018-10-29 09:35:43
    JavaCV 是一款开源的视觉处理库,基于GPLv2协议,对各种常用计算机视觉库封装后的一组jar包。项目部署必备工具
  • weblogic上部署集群项目.........................................................................................................................
  • Java项目部署的完整流程

    千次阅读 2021-08-12 18:56:43
    目录 安装JDK 目标工作目录 上传JDK安装包 解压安装包 测试JDK 安装MariaDB数据库 虚拟机测试 下载MariaDB数据库 安装成功提示 数据库启动 初始化数据库 ...导入项目数据库 ...部署后台服.
  • JAVA项目如何通过Docker实现持续部署

    千次阅读 2021-03-02 11:15:39
    本篇实操性的案例讲解——JAVA项目如何通过Docker实现持续部署(只需简单四步),即:开发通过git push上传代码,经Git和Jenkins配合,自动完成程序部署、发布,全程无需运维人员参与。这是一种真正的容器级的实现,这...
  • java后端源码部署 无道云平台 基于Docker容器的PaaS系统 一、系统架构 二、相关技术 2.1 前端技术 Vue Element-UI Echarts 2.2 后端技术 SpringBoot Spring Security JWT ActiveMQ Redis MySQL MyBatis Plus ...
  • 50 Tomcat 集群部署

    2020-06-27 17:16:10
    使用tomcat部署web服务5.tomcat集群部署6.tomcat的base的基础认证7.java源码包、jar包、war包的关系、联系、区别? 1.JVM基本介绍 JAVA业务都是运行在java虚拟机上的,简称 jvm ( java virtual machine ) 为什么...
  • 日历表格面板 [ConfigLine.java] 控制条类 [RoundBox.java] 限定选择控件 [MonthMaker.java] 月份表算法类 [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接...
  • java后端源码部署 如果你觉得还行,请给个star,感谢你的支持:folded_hands: QQ交流群:828300414,加群答案:taro-jd 一个项目从设计至最终成品的架构,包括设计/前端/管理后台/后端/k8s集群架构(持续开发中.........
  • dockerCompose集群部署

    千次阅读 2022-03-26 12:32:42
    想要使用docker-compose进行集群部署 需要将cloud项目打成jar包后存放在各自的文件夹下,同时还需要Dockerfile文件 dockerfile文件内容比较简单 FROM java:8-alpine COPY ./app.jar /tmp/app.jar ENTRYPOINT java...
  • 当前有很多服务集群部署,但是对于我们自己开发的服务系统怎么样能够解决部署问题,对大家很麻烦和笨重. 首先,我想说对于我们国内,小公司小系统比较多。大型系统毕竟少数,向阿里云看齐的不多。其实所谓的需要...
  • 总体部署情况 本实验共投入三台Linux主机节点,安排如下: ...部署前端项目 节点2 192.168.121.131 Git、JDK、Maven、Tomcat(目前还没装) 部署后端项目实例1 节点3 192.168.121.135 Git、JDK、...
  • 大型电商项目实战:Solr+FastDFS+Zookeeper+Freemarker+Quartz+SpringMVC+Mybatis集群分布式部署在线电商项目,高并发,高可用,高高负载有响应的解决方案,对于自己的技术水平拔高有很大的促进作用,
  • 动力节点内部绝密教程已经解禁,该项目是一个大型...采用分布式集群部署,采用Nginx实现负载均衡,采用Redis实现分布式缓存处理,采用MySQL集群实现读写分离,并部署了多个文件服务器,实现了数据库与文件系统的分离
  • 非活动项目:我们已停止支持 Engraver,转而直接使用 Kubernetes 等工具。 Engraver 是用于管理和部署 Onyx 集群的命令行工具。 它提供什么? 一个完整的应用程序模板,预装了最佳实践和设计习惯用法 自动集群配置到...
  • SpringCloud 微服务编排 、kubernetes + Docker 、Java小白也能学会
  • 端口号分别问8091 8092 8093
  • weblogic集群部署

    千次阅读 2018-09-12 17:45:26
    项目使用两台Weblogic单点,nginx负载均衡集群,nginx配置ip_hash.   第一步:安装两台weblogic 进入到weblogic安装包目录,使用java -jar 来打开 wls1036_generic.jar 输入Next 回车 选择第一项:Create a...
  • web项目集群时共享session方案实践
  • Nacos2.0.3版本集群部署步骤

    千次阅读 2021-12-13 21:31:27
    因为我安装的Linux系统给的内存不是很大,所以用Window系统给大家说明Nacos集群运行。在Linux操作跟Window修改的东西一模一样,具备Linux参考价值。 总共操作可以分为以下五大步 创建三个nacos 数据交由Mysql...
  • k8s部署java项目并实现访问

    千次阅读 2021-06-09 17:50:59
    使用kubernetes部署java项目并实现应用的访问、项目部署流程图如下 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210609175725445.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naG
  • flink的yarn模式部署项目集群

    千次阅读 2022-03-09 16:54:05
    flink的yarn模式部署项目集群上有两种: 1是yarn-session 2是yarn-per-job 这里介绍一下yarn-session 方式提交flink程序: 先申请一定的yarn资源,以后提交的flink程序,都放在这个资源里执行, 公用这块资源。...
  • 多台服务器集群部署方案

    千次阅读 2021-01-15 16:46:44
    第一阶段:刚接手项目 需要解决的问题: 解决方案 不足之处 第二阶段 需要解决的问题: 解决方案 不足之处 第三阶段 服务器 环境搭建 版本控制 代码同步 数据库 后台开发 缓存服务 图片等大文件存储...
  • 每当项目上线时,因为项目集群部署的,所以,来回到不同的服务器上查看日志会变得很麻烦,你是不是也碰到这样类似的问题,那么ELK将能解决你遇到的问题!01、ELK Stac...
  • RocketMQ集群部署方案(DLedger)

    千次阅读 2021-01-29 16:08:59
    RocketMQ集群部署方案(DLedger) 一、基本配置 1、准备三台虚拟机,root密码 root ;IP地址: 192.168.xxx.xxx worker1 192.168.xxx.xxx worker2 192.168.xxx.xxx worker3 并在对应的机器的/etc/hosts文件中设置...
  • Java项目打war包并部署到tomcat服务器

    千次阅读 2020-01-07 12:34:08
    文章目录1 打war包1.1 编辑...我们知道Java项目打war包可以在Eclipse和MyEclipse工具中自动打包,就是右键,然后导出war包就可以了,可是发现我的一个项目打war包的过程中遇到点小麻烦,导出的war包打开之后,里面少...
  • redis集群部署一直卡在Waiting for the cluster to join 配置Redis集群的时候在最后create cluster时发现一直卡在Waiting for the cluster to join,但是我建立集群的时候已经将每个服务器对应的redis占用的端口在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 100,522
精华内容 40,208
热门标签
关键字:

java项目集群部署

java 订阅