feat: release 2.4

Signed-off-by: spacewander <spacewanderlzx@gmail.com>
diff --git a/.gitignore b/.gitignore
index f94b319..691ed4e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -74,3 +74,4 @@
 /build-cache/
 # release tar package
 *.tgz
+release/*
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6b43fba..979ad79 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -23,6 +23,7 @@
 
 ## Table of Contents
 
+- [2.4.0](#240)
 - [2.3.0](#230)
 - [2.2.0](#220)
 - [2.1.0](#210)
@@ -39,6 +40,36 @@
 - [0.7.0](#070)
 - [0.6.0](#060)
 
+## 2.4.0
+
+### Change
+
+- change: global rules should not be executed on the internal api by default [#3396](https://github.com/apache/apisix/pull/3396)
+- change: default to cache DNS record according to the TTL [#3530](https://github.com/apache/apisix/pull/3530)
+
+### Core
+
+- :sunrise: feat: support SRV record [#3686](https://github.com/apache/apisix/pull/3686)
+- :sunrise: feat: add dns discovery [#3629](https://github.com/apache/apisix/pull/3629)
+- :sunrise: feat: add consul kv discovery module [#3615](https://github.com/apache/apisix/pull/3615)
+- :sunrise: feat: support to bind plugin config by `plugin_config_id` [#3567](https://github.com/apache/apisix/pull/3567)
+- :sunrise: feat: support listen http2 with plaintext [#3547](https://github.com/apache/apisix/pull/3547)
+- :sunrise: feat: support DNS AAAA record [#3484](https://github.com/apache/apisix/pull/3484)
+
+### Plugin
+
+- :sunrise: feat: the traffic-split plugin supports upstream_id [#3512](https://github.com/apache/apisix/pull/3512)
+- :sunrise: feat(zipkin): support b3 req header [#3551](https://github.com/apache/apisix/pull/3551)
+
+### Bugfix
+
+- fix(chash): ensure retry can try every node [#3651](https://github.com/apache/apisix/pull/3651)
+- fix: script does not work when the route is bound to a service [#3678](https://github.com/apache/apisix/pull/3678)
+- fix: use openssl111 in openresty dir in precedence [#3603](https://github.com/apache/apisix/pull/3603)
+- fix(zipkin): don't cache the per-req sample ratio [#3522](https://github.com/apache/apisix/pull/3522)
+
+For more changes, please refer to [Milestone](https://github.com/apache/apisix/milestone/13)
+
 ## 2.3.0
 
 ### Change
diff --git a/README.md b/README.md
index 4fe3916..92339f6 100644
--- a/README.md
+++ b/README.md
@@ -153,9 +153,9 @@
    - Download the latest source code release package:
 
      ```shell
-     $ mkdir apisix-2.3
-     $ wget https://downloads.apache.org/apisix/2.3/apache-apisix-2.3-src.tgz
-     $ tar zxvf apache-apisix-2.3-src.tgz -C apisix-2.3
+     $ mkdir apisix-2.4
+     $ wget https://downloads.apache.org/apisix/2.4/apache-apisix-2.4-src.tgz
+     $ tar zxvf apache-apisix-2.4-src.tgz -C apisix-2.4
      ```
 
    - Install the dependencies:
@@ -192,7 +192,7 @@
    - install APISIX:
 
    ```shell
-   $ sudo yum install -y https://github.com/apache/apisix/releases/download/2.3/apisix-2.3-0.x86_64.rpm
+   $ sudo yum install -y https://github.com/apache/apisix/releases/download/2.4/apisix-2.4-0.x86_64.rpm
    ```
 
    - check version of APISIX:
diff --git a/apisix/core/version.lua b/apisix/core/version.lua
index e419532..8c93638 100644
--- a/apisix/core/version.lua
+++ b/apisix/core/version.lua
@@ -15,5 +15,5 @@
 -- limitations under the License.
 --
 return {
-    VERSION = "2.3"
+    VERSION = "2.4"
 }
diff --git a/docs/en/latest/config.json b/docs/en/latest/config.json
index e217436..1527ab9 100644
--- a/docs/en/latest/config.json
+++ b/docs/en/latest/config.json
@@ -1,5 +1,5 @@
 {
-  "version": 2.3,
+  "version": 2.4,
   "sidebar": [
     {
       "type": "doc",
diff --git a/docs/en/latest/how-to-build.md b/docs/en/latest/how-to-build.md
index 4049347..2133f73 100644
--- a/docs/en/latest/how-to-build.md
+++ b/docs/en/latest/how-to-build.md
@@ -36,22 +36,22 @@
 You need to download the Apache source release first:
 
 ```shell
-$ mkdir apisix-2.3
-$ wget https://downloads.apache.org/apisix/2.3/apache-apisix-2.3-src.tgz
-$ tar zxvf apache-apisix-2.3-src.tgz -C apisix-2.3
+$ mkdir apisix-2.4
+$ wget https://downloads.apache.org/apisix/2.4/apache-apisix-2.4-src.tgz
+$ tar zxvf apache-apisix-2.4-src.tgz -C apisix-2.4
 ```
 
 Install the Lua libraries that the runtime depends on:
 
 ```shell
-cd apache-apisix-2.3
+cd apache-apisix-2.4
 make deps
 ```
 
 ### Installation via RPM package (CentOS 7)
 
 ```shell
-sudo yum install -y https://github.com/apache/apisix/releases/download/2.3/apisix-2.3-0.x86_64.rpm
+sudo yum install -y https://github.com/apache/apisix/releases/download/2.4/apisix-2.4-0.x86_64.rpm
 ```
 
 ### Installation via Luarocks (macOS not supported)
@@ -67,11 +67,11 @@
 > Install the specified version via Luarocks:
 
 ```shell
-# Install version 2.3
-sudo luarocks install --lua-dir=/path/openresty/luajit apisix 2.3
+# Install version 2.4
+sudo luarocks install --lua-dir=/path/openresty/luajit apisix 2.4
 
 # old luarocks not support the `lua-dir` parameter, you can remove this option
-sudo luarocks install apisix 2.3
+sudo luarocks install apisix 2.4
 ```
 
 ## 3. Manage (start/stop) APISIX Server
diff --git a/docs/es/latest/README.md b/docs/es/latest/README.md
index 78a6cea..0e19a21 100644
--- a/docs/es/latest/README.md
+++ b/docs/es/latest/README.md
@@ -155,9 +155,9 @@
    - Bajar el paquete de publicación más reciente de código fuente:
 
      ```shell
-     $ mkdir apisix-2.3
-     $ wget https://downloads.apache.org/apisix/2.3/apache-apisix-2.3-src.tgz
-     $ tar zxvf apache-apisix-2.3-src.tgz -C apisix-2.3
+     $ mkdir apisix-2.4
+     $ wget https://downloads.apache.org/apisix/2.4/apache-apisix-2.4-src.tgz
+     $ tar zxvf apache-apisix-2.4-src.tgz -C apisix-2.4
      ```
 
    - Instalar las dependencias:
@@ -194,7 +194,7 @@
    - Instalar APISIX:
 
    ```shell
-   $ sudo yum install -y https://github.com/apache/apisix/releases/download/2.3/apisix-2.3-0.x86_64.rpm
+   $ sudo yum install -y https://github.com/apache/apisix/releases/download/2.4/apisix-2.4-0.x86_64.rpm
    ```
 
    - Chequear versión de APISIX:
diff --git a/docs/es/latest/config.json b/docs/es/latest/config.json
index 4c17056..76fd7d3 100644
--- a/docs/es/latest/config.json
+++ b/docs/es/latest/config.json
@@ -1,4 +1,4 @@
 {
-  "version": 2.3,
+  "version": 2.4,
   "sidebar": []
 }
diff --git a/docs/zh/latest/CHANGELOG.md b/docs/zh/latest/CHANGELOG.md
index 85fa8a3..e6c626c 100644
--- a/docs/zh/latest/CHANGELOG.md
+++ b/docs/zh/latest/CHANGELOG.md
@@ -23,6 +23,7 @@
 
 ## Table of Contents
 
+- [2.4.0](#240)
 - [2.3.0](#230)
 - [2.2.0](#220)
 - [2.1.0](#210)
@@ -39,6 +40,36 @@
 - [0.7.0](#070)
 - [0.6.0](#060)
 
+## 2.4.0
+
+### Change
+
+- 插件暴露的公共 API 将默认不再执行全局插件 [#3396](https://github.com/apache/apisix/pull/3396)
+- DNS 记录缓存时间默认按 TTL 设置 [#3530](https://github.com/apache/apisix/pull/3530)
+
+### Core
+
+- :sunrise: 支持 DNS SRV 记录 [#3686](https://github.com/apache/apisix/pull/3686)
+- :sunrise: 新的 DNS 服务发现模块 [#3629](https://github.com/apache/apisix/pull/3629)
+- :sunrise: 支持 Consul HTTP 接口服务发现模块 [#3615](https://github.com/apache/apisix/pull/3615)
+- :sunrise: 支持插件复用 [#3567](https://github.com/apache/apisix/pull/3567)
+- :sunrise: 支持 plaintext HTTP2 [#3547](https://github.com/apache/apisix/pull/3547)
+- :sunrise: 支持 DNS AAAA 记录 [#3484](https://github.com/apache/apisix/pull/3484)
+
+### Plugin
+
+- :sunrise: traffic-split 插件支持 upstream_id [#3512](https://github.com/apache/apisix/pull/3512)
+- :sunrise: zipkin 插件 b3 请求头 [#3551](https://github.com/apache/apisix/pull/3551)
+
+### Bugfix
+
+- 一致性 hash 负载均衡确保重试所有节点 [#3651](https://github.com/apache/apisix/pull/3651)
+- 当 route 绑定 service 后仍能执行 script [#3678](https://github.com/apache/apisix/pull/3678)
+- 应当依赖 openssl111 [#3603](https://github.com/apache/apisix/pull/3603)
+- zipkin 避免缓存请求特定的数据 [#3522](https://github.com/apache/apisix/pull/3522)
+
+更多的变动可以参考[里程碑](https://github.com/apache/apisix/milestone/13)
+
 ## 2.3.0
 
 ### Change
diff --git a/docs/zh/latest/README.md b/docs/zh/latest/README.md
index e8a6a44..e3b6fc0 100644
--- a/docs/zh/latest/README.md
+++ b/docs/zh/latest/README.md
@@ -153,9 +153,9 @@
    - 下载最新的源码发布包:
 
      ```shell
-     $ mkdir apisix-2.3
-     $ wget https://downloads.apache.org/apisix/2.3/apache-apisix-2.3-src.tgz
-     $ tar zxvf apache-apisix-2.3-src.tgz -C apisix-2.3
+     $ mkdir apisix-2.4
+     $ wget https://downloads.apache.org/apisix/2.4/apache-apisix-2.4-src.tgz
+     $ tar zxvf apache-apisix-2.4-src.tgz -C apisix-2.4
      ```
 
    - 安装运行时依赖的 Lua 库:
@@ -192,7 +192,7 @@
    - 安装 APISIX:
 
    ```shell
-   $ sudo yum install -y https://github.com/apache/apisix/releases/download/2.3/apisix-2.3-0.x86_64.rpm
+   $ sudo yum install -y https://github.com/apache/apisix/releases/download/2.4/apisix-2.4-0.x86_64.rpm
    ```
 
    - 检查 APISIX 的版本号:
diff --git a/docs/zh/latest/config.json b/docs/zh/latest/config.json
index 8300073..cb3784e 100644
--- a/docs/zh/latest/config.json
+++ b/docs/zh/latest/config.json
@@ -1,5 +1,5 @@
 {
-  "version": 2.3,
+  "version": 2.4,
   "sidebar": [
     {
       "type": "doc",
diff --git a/docs/zh/latest/how-to-build.md b/docs/zh/latest/how-to-build.md
index 550ccdc..03e5ab5 100644
--- a/docs/zh/latest/how-to-build.md
+++ b/docs/zh/latest/how-to-build.md
@@ -36,22 +36,22 @@
 你需要先下载 Apache Release 源码包:
 
 ```shell
-$ mkdir apisix-2.3
-$ wget https://downloads.apache.org/apisix/2.3/apache-apisix-2.3-src.tgz
-$ tar zxvf apache-apisix-2.3-src.tgz -C apisix-2.3
+$ mkdir apisix-2.4
+$ wget https://downloads.apache.org/apisix/2.4/apache-apisix-2.4-src.tgz
+$ tar zxvf apache-apisix-2.4-src.tgz -C apisix-2.4
 ```
 
 安装运行时依赖的 Lua 库:
 
 ```
-cd apache-apisix-2.3
+cd apache-apisix-2.4
 make deps
 ```
 
 ### 通过 RPM 包安装(CentOS 7)
 
 ```shell
-sudo yum install -y https://github.com/apache/apisix/releases/download/2.3/apisix-2.3-0.x86_64.rpm
+sudo yum install -y https://github.com/apache/apisix/releases/download/2.4/apisix-2.4-0.x86_64.rpm
 ```
 
 ### 通过 Luarocks 安装 (不支持 macOS)
@@ -67,11 +67,11 @@
 > 通过 Luarocks 安装指定的版本:
 
 ```shell
-# 安装 apisix 的 2.3 版本
-sudo luarocks install --lua-dir=/path/openresty/luajit apisix 2.3
+# 安装 apisix 的 2.4 版本
+sudo luarocks install --lua-dir=/path/openresty/luajit apisix 2.4
 
 # 老版本 luarocks 可能不支持 `lua-dir` 参数,可以删除该选项
-sudo luarocks install apisix 2.3
+sudo luarocks install apisix 2.4
 ```
 
 ## 3. 管理(启动、关闭等)APISIX 服务
diff --git a/rockspec/apisix-2.4-0.rockspec b/rockspec/apisix-2.4-0.rockspec
new file mode 100644
index 0000000..60ce439
--- /dev/null
+++ b/rockspec/apisix-2.4-0.rockspec
@@ -0,0 +1,90 @@
+--
+-- Licensed to the Apache Software Foundation (ASF) under one or more
+-- contributor license agreements.  See the NOTICE file distributed with
+-- this work for additional information regarding copyright ownership.
+-- The ASF licenses this file to You under the Apache License, Version 2.0
+-- (the "License"); you may not use this file except in compliance with
+-- the License.  You may obtain a copy of the License at
+--
+--     http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+
+package = "apisix"
+version = "2.4-0"
+supported_platforms = {"linux", "macosx"}
+
+source = {
+    url = "git://github.com/apache/apisix",
+    branch = "2.4",
+}
+
+description = {
+    summary = "Apache APISIX is a cloud-native microservices API gateway, delivering the ultimate performance, security, open source and scalable platform for all your APIs and microservices.",
+    homepage = "https://github.com/apache/apisix",
+    license = "Apache License 2.0",
+}
+
+dependencies = {
+    "lua-resty-ctxdump = 0.1-0",
+    "lua-resty-dns-client = 5.2.0",
+    "lua-resty-template = 1.9",
+    "lua-resty-etcd = 1.4.3",
+    "lua-resty-balancer = 0.02rc5",
+    "lua-resty-ngxvar = 0.5.2",
+    "lua-resty-jit-uuid = 0.0.7",
+    "lua-resty-healthcheck-api7 = 2.2.0",
+    "lua-resty-jwt = 0.2.0",
+    "lua-resty-hmac-ffi = 0.05",
+    "lua-resty-cookie = 0.1.0",
+    "lua-resty-session = 2.24",
+    "opentracing-openresty = 0.1",
+    "lua-resty-radixtree = 2.6.1",
+    "lua-protobuf = 0.3.1",
+    "lua-resty-openidc = 1.7.2-1",
+    "luafilesystem = 1.7.0-2",
+    "lua-tinyyaml = 1.0",
+    "nginx-lua-prometheus = 0.20201218",
+    "jsonschema = 0.9.3",
+    "lua-resty-ipmatcher = 0.6",
+    "lua-resty-kafka = 0.07",
+    "lua-resty-logger-socket = 2.0-0",
+    "skywalking-nginx-lua = 0.3-0",
+    "base64 = 1.5-2",
+    "binaryheap = 0.4",
+    "dkjson = 2.5-2",
+    "resty-redis-cluster = 1.02-4",
+    "lua-resty-expr = 1.1.0",
+    "graphql = 0.0.2",
+    "argparse = 0.7.1-1",
+    "luasocket = 3.0rc1-2",
+    "luasec = 0.9-1",
+    "lua-resty-consul = 0.3-2",
+}
+
+build = {
+    type = "make",
+    build_variables = {
+        CFLAGS="$(CFLAGS)",
+        LIBFLAG="$(LIBFLAG)",
+        LUA_LIBDIR="$(LUA_LIBDIR)",
+        LUA_BINDIR="$(LUA_BINDIR)",
+        LUA_INCDIR="$(LUA_INCDIR)",
+        LUA="$(LUA)",
+        OPENSSL_INCDIR="$(OPENSSL_INCDIR)",
+        OPENSSL_LIBDIR="$(OPENSSL_LIBDIR)",
+    },
+    install_variables = {
+        INST_PREFIX="$(PREFIX)",
+        INST_BINDIR="$(BINDIR)",
+        INST_LIBDIR="$(LIBDIR)",
+        INST_LUADIR="$(LUADIR)",
+        INST_CONFDIR="$(CONFDIR)",
+    },
+}
+